LINUX.ORG.RU

получение даных по нагрузкам ядер

 


0

2

Перед запуском приложения нужно отсканировать нагрузку всех ядер и получить минимально нагруженное чтобы потом tascset'у указать это ядро.

Получаю через top, но проблема в том, что он на первой секунде отдает одни и те же данные а вот со второго обновления уже нормально.

top - 12:47:06 up 20 days, 20:16,  1 user,  load average: 1.77, 3.21, 3.75
Tasks: 397 total,  10 running, 387 sleeping,   0 stopped,   0 zombie
Cpu0  : 27.9%us,  9.9%sy,  0.0%ni, 56.2%id,  1.8%wa,  0.0%hi,  4.1%si,  0.0%st
Cpu1  : 26.0%us,  7.8%sy,  0.0%ni, 66.1%id,  0.1%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  : 23.1%us,  6.7%sy,  0.0%ni, 70.0%id,  0.1%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  : 21.4%us,  6.3%sy,  0.0%ni, 72.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu4  : 27.9%us,  9.2%sy,  0.0%ni, 62.1%id,  0.7%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu5  : 24.5%us,  7.4%sy,  0.0%ni, 68.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu6  : 22.1%us,  6.6%sy,  0.0%ni, 71.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu7  : 20.9%us,  6.3%sy,  0.0%ni, 72.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  32888872k total, 32536428k used,   352444k free,   347716k buffers
Swap:  7807568k total,    61956k used,  7745612k free, 24583040k cached

Сколько не пиши top первым отдает именно эти данные, но второе обновление уже говорит следующее

top - 12:58:00 up 20 days, 20:27,  1 user,  load average: 1.17, 1.29, 2.32
Tasks: 416 total,   7 running, 409 sleeping,   0 stopped,   0 zombie
Cpu0  : 31.2%us,  5.4%sy,  0.0%ni, 57.1%id,  0.0%wa,  0.0%hi,  6.3%si,  0.0%st
Cpu1  : 31.5%us,  5.7%sy,  0.0%ni, 62.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  : 25.1%us,  5.7%sy,  0.0%ni, 69.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  : 15.7%us,  1.9%sy,  0.0%ni, 82.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu4  : 32.4%us,  5.6%sy,  0.0%ni, 62.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu5  : 32.4%us,  3.8%sy,  0.0%ni, 63.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu6  : 27.1%us,  6.0%sy,  0.0%ni, 66.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu7  : 81.7%us, 10.0%sy,  0.0%ni,  8.4%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  32888872k total, 32376780k used,   512092k free,   347828k buffers
Swap:  7807568k total,    61956k used,  7745612k free, 24637204k cached


Просто возьми любое ядро и убери у всех процеессов его из аффинити.

anonymous ()

Открой для себя atop
У него и логи есть

slowpony ★★★★ ()

не парь мозг! ядро само поместит новое приложение на менее загруженный проц, и даже когда ситуация изменится, то по ходу дела может переместить на другой cpu

anonymous ()
Ответ на: комментарий от anonymous

Нужно чтобы приложение не прыгало по ядрам, поэтому нужно каждое из них чтобы висело с привязкой к ядру, но перед запуском нового, нужно выяснить какое ядро более свободное и туда привязывать. Собстно парсер готов, и работает, но сам top не правильно данные отдает

User01 ()
Ответ на: комментарий от User01

нужно выяснить какое ядро более свободное и туда привязывать

Несусветная глупость. В следующую же секунду картина распределения процессов радикально изменится.

Далее, чем обосновано ТЗ «не прыгало по ядрам»? — планировщик сам решает на каком ядре запускать приложение — не надо ему мешать.

Но если уж так очень сильно хочется прострелить себе ногу — привязываешь к любому. Планировщик сам потом от туда другие процессы повыгоняет.

beastie ★★★★★ ()
Ответ на: комментарий от User01

Только после всех своих манипуляций не забудь прогнать тесты. По производительности нескольких запущенных приложений с привязкой к ЦПУ (то, что ты пытаешься сделать) и без нее, когда приложение запускается по умолчанию и планировщик сам выбирает ядро (нужно будет посчитать сколько полезных результатов смогли нагенерировать все вместе приложения за достаточно продолжительное время при максимальной нагрузке).

Поймешь для себя, что все, потраченное тобой время, ушло на получение опыта без какого-либо полезного результата.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.