Титла: 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 процесорна машина - обикновено машините с повече процесори вършат повече работа За мене лично стойности над 1 са обезпокоителни и почвам да се ровя да видя какъв е проблема. Ако по принцип loadavg ти е 0.3 да речем и изведнъж скочи над 1 и стои така над 15 минути значи очевидно нещо не е наред. За жалост диагностицирането на проблема не винаги е тривиално.
Титла: 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 от друга страна помага Виждал съм loadavg от над 200 на машина, маунт-нала отдалечена самба директория като локална файлова система (при нарушена свързаност с машината). От отдалечената самба се изпълняват байнърита през крон-а всяка минута. За няколко часа нещата стават....loadavg над 200. И такам. 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
Добре, къде видя да съм писал че нямат?
и:
За какво точно спорим ? |