CPU AFFINITY
🔤 🔤 🔤 🔤 🔤 🔤 🔤
Предыдущие статьи по настройке производительности Здесь и Здесь:
В современных системах число ядер только растет. И запущенный процесс гуляет по ядрам, как разочаровавшаяся в любви девушка.
ㅤ
Таким образом планировщик системы пытается балансировать нагрузку, ресурсы (и тепловыделение). Но это поведение можно изменить.
С помощью программы можно taskset можно запускать процессы на указанных ядрах.
Например:
Запустит
Фактически
Если использовать ключик
Современные процессоры имеют гибридную архитектуру. Т.е. они содержат и энергоэффективные и производительные ядра.
Так вот, с помощью этой команды можно немного оптимизировать производительность - ограничивая второстепенным приложениям доступ к высокопроизводительным ядрам.
Ну, или для всей «шушеры» выделить пару ядер, освободив остальные для самых важных процессов.
Но если Вам лень этим заниматься - знайте, что планировщик и так неплохо справляется. Единственное, чего он не знает - какие процессы для Вас более важные. Но ему всегда об этом можно напомнить, с помощью команды nice.
Ну, и напоследок - вредный совет.
Однажды у моего коллеги на работе эффективные менеджеры ввели KPI.
Деньги начали платить по проделанной, а не стабильной работе. После этого у всех, включая бухгалтерию в конце квартала все начинало тормозить Но не сразу, а как-то плавно, но заметно.
И приходилось проводить сложную многочасовую оптимизацию систем (оптимизация дисков, переиндексирование, очистка кэшей...). После которой все до конца следующего отчетного периода работало нормально.
А потом - о5-25.
Но как они этого добивались - я не знаю :-)
🛠 #cpu #core #taskset #nice #perfomance
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
По просьбе коллеги @dox89.
Предыдущие статьи по настройке производительности Здесь и Здесь:
В современных системах число ядер только растет. И запущенный процесс гуляет по ядрам, как разочаровавшаяся в любви девушка.
ㅤ
Таким образом планировщик системы пытается балансировать нагрузку, ресурсы (и тепловыделение). Но это поведение можно изменить.
С помощью программы можно taskset можно запускать процессы на указанных ядрах.
Например:
taskset --cpu-list 0-2,6 thunderbird
Запустит
thunderbird, и разрешит почтовому клиенту работать только на указанных ядрах.Фактически
taskset не разрешает работать на указанных ядрах, а запрещает работать на всех остальных, потому что по умолчанию любому процессу можно работать на всех ядрах.Если использовать ключик
-p PID, то аналогичную процедуру можно выполнить с уже запущенным процессом.Современные процессоры имеют гибридную архитектуру. Т.е. они содержат и энергоэффективные и производительные ядра.
Так вот, с помощью этой команды можно немного оптимизировать производительность - ограничивая второстепенным приложениям доступ к высокопроизводительным ядрам.
Ну, или для всей «шушеры» выделить пару ядер, освободив остальные для самых важных процессов.
Но если Вам лень этим заниматься - знайте, что планировщик и так неплохо справляется. Единственное, чего он не знает - какие процессы для Вас более важные. Но ему всегда об этом можно напомнить, с помощью команды nice.
Ну, и напоследок - вредный совет.
Однажды у моего коллеги на работе эффективные менеджеры ввели KPI.
Деньги начали платить по проделанной, а не стабильной работе. После этого у всех, включая бухгалтерию в конце квартала все начинало тормозить Но не сразу, а как-то плавно, но заметно.
И приходилось проводить сложную многочасовую оптимизацию систем (оптимизация дисков, переиндексирование, очистка кэшей...). После которой все до конца следующего отчетного периода работало нормально.
А потом - о5-25.
Но как они этого добивались - я не знаю :-)
man tasksetman nice—
Please open Telegram to view this post
VIEW IN TELEGRAM
Борьба за производительность
В продолжение истории борьбы за производительность.
🔤 🔤 🔤 🔤 🔤 🔤 🔤 🔤
Допустим у нас есть что-то, что обладает каким-то неприличным количеством ядер, например 16.
ㅤ
И нам надо разбалансировать эти ядра между разными «типами» нагрузки.
Причем мы точно знаем, сколько ядер нам надо для одного типа и точно не знаем, сколько нужно для всего остального.
Тут на помощь приходят 4 параметра ядра -
В рамках решаемого кейса сразу указал на них, что сократило поиск необходимых решений.
По сути, все 4 параметра решают одну задачу - ограничить использование указанных ядер (например 0-3) процессами, за исключением базовых - init, scsi и прочих.
Таким образом мы можем через тот же
В данной картине мы защищаем этот сегмент от службы
Но будьте внимательны при изоляции, так как в случае количества процессоров > 1 нужно чуть иначе выставлять диапазоны, чтобы не угодить в яму NUMA. Там деление ядер от 0 до последнего происходит сегментами по очереди.
Конкретно мой случай изоляции был применен в рамках разделения нагрузки на сетевые прерывания и nginx, но в совокупности факторов - параметры ядра, отключенный + маскированный
🛠 #cpu #core #taskset #nice #perfomance
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
В продолжение истории борьбы за производительность.
Допустим у нас есть что-то, что обладает каким-то неприличным количеством ядер, например 16.
ㅤ
И нам надо разбалансировать эти ядра между разными «типами» нагрузки.
Причем мы точно знаем, сколько ядер нам надо для одного типа и точно не знаем, сколько нужно для всего остального.
Тут на помощь приходят 4 параметра ядра -
isolcpus, nohz_full, rcu_nocbs и irqaffinity.В рамках решаемого кейса сразу указал на них, что сократило поиск необходимых решений.
По сути, все 4 параметра решают одну задачу - ограничить использование указанных ядер (например 0-3) процессами, за исключением базовых - init, scsi и прочих.
Таким образом мы можем через тот же
taskset указать вручную на ядра 0-3 те процессы, что нам нужны.В данной картине мы защищаем этот сегмент от службы
irqbalance, которая с завидным упорством будет ребалансировать процессы между ядрами.Но будьте внимательны при изоляции, так как в случае количества процессоров > 1 нужно чуть иначе выставлять диапазоны, чтобы не угодить в яму NUMA. Там деление ядер от 0 до последнего происходит сегментами по очереди.
Конкретно мой случай изоляции был применен в рамках разделения нагрузки на сетевые прерывания и nginx, но в совокупности факторов - параметры ядра, отключенный + маскированный
irqbalance, taskset и еще несколько твиков - давало профит только при утилизации сетевой карты лишь до 70%, дальше спецэффекты постепенно возвращались.—
Please open Telegram to view this post
VIEW IN TELEGRAM