Титла: Top и load average Публикувано от: choko в Oct 04, 2006, 19:26 Здравейте !
Моля за помощ при разтълкуването на load average: какво значат трите колонки със цифри при команда top: load average: 2.59, 2.85, 3.03 Титла: Top и load average Публикувано от: gat3way в Oct 04, 2006, 20:36 Накратко трите числа показват колко процеса са стояли в опашката чакащи за процесорно време средно в последната 1/5/15 минути. Стойности над 1 индикират по принцип че нещата не са особено нормални, въпреки че обикновено нещата са доста по-сложни
![]() За да се отговори по-нашироко трябва да се засегнат теми като "състояние" на процесите, task scheduling, user/system/irq/iowait time и т.н. Титла: Top и load average Публикувано от: choko в Oct 04, 2006, 21:14 Благодаря ти много !
Но можеш ли да ми кажеш колко би трябвало да са нормалните стойности при 2 процесорна и при 8 процесорна машина ![]() Титла: Top и load average Публикувано от: gat3way в Oct 04, 2006, 22:03 Няма "нормални" стойности. А и няма значение дали е на 2,4,8,64 процесорна машина - обикновено машините с повече процесори вършат повече работа
![]() Титла: Top и load average Публикувано от: CTEHATA в Oct 04, 2006, 22:51 Цитат на: choko,Окт. 04 2006,20:26 Трите числа са "Load average" за последните 1,5 и 15 минути. Можеш да си представиш "Load average" като броя процесори, които биха стигнали за да може всяка "running" задача да си има свой процесор и да не се изчакват. Т.е. общо взето, когато Л.А. ти е по-малко от броя процесори, нямаш сериозен проблем. На практика е мааалко по-сложно. Конкретно в пестнатия случай, имало е някакво натоварване, но то "отминава", защото по-старите стойности са по-големи. Без да се знаят броя процесори и конкретния случай, не може да се каже нищо повече. Като цяло, ако 15 минутната стойност винаги е над броя процесори, трябва да се търси корена на проблема. Ако си пуснал сериозна задача - компресиране например, нормално е Л.А. да се задържи висок. Титла: Top и load average Публикувано от: gat3way в Oct 04, 2006, 23:30 Все пак съветвам ама МНОГО съветвам да не се доверяваш на loadavg по отношение на това доколко реално е натоварена една система. Нещата обикновено са много по-сложни от това. Това най-просто се илюстрира ако си напишеш една програма реализираща безкраен цикъл
примерно така: void main() {for (; ![]() и я пускаш. След малко loadavg ще стане 1 (+досегашния). Пускаш я в още една конзола, увеличава се с още 1. И т.н. Можеш да я пуснеш в още 5 конзоли, при което общата производителност няма да спадне много - пак ще си правиш каквото си правиш без да го усетиш много. Това е защото няма почти никакво натоварване върху паметта, вход/изход системата, мрежата и т.н. Task scheduler-a ще си прави без проблеми context switch-овете там. От друга страна, откакто замениха linuxthreads с NPTL, един процес може да има хиляди нишки, всички извършващи някаква дейност, понякога тежко товарещи системата. Всички те се водят един процес, т.е и 20000 нишки да са, няма да вдигнат loadavg с повече от 1 (но пък честно казано не съм проверявал) loadavg стойност над броя процесори може да е индикация за много неща, не определено за това че капацитетът на процесорите е изчерпан. Може да е въпрос на бавен достъп до дисковете, а да има много процеси които се бият за достъп до тях. На пренатоварена мрежов интерфейс, който вдига прекъсване всеки път като получи етернет фрейм и така не оставят процесорно време за потребителските процеси. Повечето от тези неща трудно ще ги разбереш със top, но sar от друга страна помага ![]() top има хубави възможности въпреки всичко. Може да покаже и нишките на процеса както и на кой процесор се изпълняват. Може да покаже на коя функция процесът "спи". И т.н. Титла: Top и load average Публикувано от: 0FF1 в Oct 05, 2006, 01:44 Ако искаш някакъв реален поглед за натоварването на системаат .. използвай mrtg и nmap или някакъв bash script да ти начертае едни графики и това e
![]() Титла: Top и load average Публикувано от: choko в Oct 05, 2006, 16:32 Благодаря на Всички отговорили
![]() Достатъчна информация ![]() Титла: Top и load average Публикувано от: astronom в Oct 05, 2006, 17:12
Да, наистина няма нормални стойности! Още повече, че стойности от порядъка на 1-5 за 1 минута са нормални дори за десктоп система. При сървърите нещата отиват дори до 150 - 200 процеса за минута. Не мисля, че стойност от 1 е притеснителна дори за дълго време. По скоро притеснително е ако даден процес заема прекалено дълго процесора и то безсмислено, но това се диагностицира по-добре с top и според мен е "тривиално". Титла: Top и load average Публикувано от: astronom в Oct 05, 2006, 17:24
Това е невярно! Най-общо казано load average е броя на процесите в опашката за изпълнение (run queue) за едница време (най-често 1/5/15 минути). Това няма нищо общо с броя на процесорите, защото както знаете има времеделене и всеки процес получава полагащото му се процесорно време спрямо приоритета си. Така, че няма нищо странно в load average за последната минута от 3.75 на еднопроцесорна машина. Титла: Top и load average Публикувано от: gat3way в Oct 05, 2006, 17:39 150-200 running процеса? Уау, тия задачи явно страдат от безсъние, всичките никъде не срещат blocking операции съответно не sleep-ват
![]() Тривиално? Хм, да речем че процентите CPU usage от top са меродавен критерии. Какво ще направиш на една production машина, ще утрепеш виновния процес? Мммм...не ми допадат тези идеи, въпреки че определено не е моя работа какво правите ![]()
Хммм, като имаш няколко процесора обикновено task scheduler-a е smp/numa-aware. Ако имаш 2 процесора и 4 running процеса, 2 от тях ще се изпълняват и 2 ще стоят на опашката. Ако имаш един процесор и отново 4 running процеса, един ще се изпълнява и три ще висят в опашката. Съответно ако това състояние се запази над една минута, първата стойност на loadavg ще бъде съответно в първия случай около 2, във втория около 3. Въпросът е че повечето приложения по време на изпълнението си все в един момент стигат до някаква blocking операция: дали ще е очакване на вход от конзолата, дали ще чакат някакъв пакет от мрежата, дали нещо друго, няма значение. Затова е и примера със празния безкраен цикъл където няма такава операция и за една минута изпълнение loadavg/мин се увеличава с 1 - т.е процесът през цялото време е бил в running state. Така че loadavg има толкова общо с броя процесори колкото общо има и с броя на процесите в "Running" състояние. Титла: Top и load average Публикувано от: astronom в Oct 06, 2006, 11:17
Напротив има! За доказателство може да се разгледа кода на ядрото: kernel/timer.c, line 864 kernel/timer.c, line 843 kernel/sched.c, line 1669 Може да се направи извода, че load average (поне в Linux) e броя на изпълняващите се процеси и процесите в състояние uninterruptible за единица време върху всички процесори. Иначе казано броя на процесите в опашката за изпълнение за единица време. Ако не се лъжа точно ти свърза броя на процесорите с load average-а:
Титла: Top и load average Публикувано от: gat3way в Oct 06, 2006, 16:18
Добре, къде видя да съм писал че нямат? ![]()
и:
За какво точно спорим ? ![]() |