Автор Тема: Top и load average  (Прочетена 4673 пъти)

choko

  • Напреднали
  • *****
  • Публикации: 64
  • Distribution: Slackware 9,10,11,12,13
  • Window Manager: Gnome
    • Профил
Top и load average
« -: Oct 04, 2006, 19:26 »
Здравейте !
Моля за помощ при разтълкуването на load average:
какво значат трите колонки със цифри при команда top:

load average: 2.59, 2.85, 3.03
Активен

Ползвай Linux! От четене по форумите не остава време за секс;)
И пак по-добре!!!!!!!!!!!!!!!! :))))))))))))))))))))))))))))))))))))))))))))

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Top и load average
« Отговор #1 -: Oct 04, 2006, 20:36 »
Накратко трите числа показват колко процеса са стояли в опашката чакащи за процесорно време средно в последната 1/5/15 минути. Стойности над 1 индикират по принцип че нещата не са особено нормални, въпреки че обикновено нещата са доста по-сложни '<img'>

За да се отговори по-нашироко трябва да се засегнат теми като "състояние" на процесите, task scheduling, user/system/irq/iowait time и т.н.
Активен

"Knowledge is power" - France is Bacon

choko

  • Напреднали
  • *****
  • Публикации: 64
  • Distribution: Slackware 9,10,11,12,13
  • Window Manager: Gnome
    • Профил
Top и load average
« Отговор #2 -: Oct 04, 2006, 21:14 »
Благодаря ти много !
Но можеш ли да ми кажеш колко би трябвало да са нормалните стойности при 2 процесорна и при 8 процесорна машина'<img'>?
Активен

Ползвай Linux! От четене по форумите не остава време за секс;)
И пак по-добре!!!!!!!!!!!!!!!! :))))))))))))))))))))))))))))))))))))))))))))

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Top и load average
« Отговор #3 -: Oct 04, 2006, 22:03 »
Няма "нормални" стойности. А и няма значение дали е на 2,4,8,64 процесорна машина - обикновено машините с повече процесори вършат повече работа '<img'> За мене лично стойности над 1 са обезпокоителни и почвам да се ровя да видя какъв е проблема. Ако по принцип loadavg ти е 0.3 да речем и изведнъж скочи над 1 и стои така над 15 минути значи очевидно нещо не е наред. За жалост диагностицирането на проблема не винаги е тривиално.
Активен

"Knowledge is power" - France is Bacon

CTEHATA

  • Напреднали
  • *****
  • Публикации: 101
    • Профил
Top и load average
« Отговор #4 -: Oct 04, 2006, 22:51 »
Цитат на: choko,Окт. 04 2006,20:26
Трите числа са "Load average" за последните 1,5 и 15 минути.
Можеш да си представиш "Load average" като броя процесори, които биха стигнали за да може всяка "running" задача да си има свой процесор и да не се изчакват.
Т.е. общо взето, когато Л.А. ти е по-малко от броя процесори, нямаш сериозен проблем. На практика е мааалко по-сложно. Конкретно в пестнатия случай, имало е някакво натоварване, но то "отминава", защото по-старите стойности са по-големи. Без да се знаят броя процесори и конкретния случай, не може да се каже нищо повече.
  Като цяло, ако 15 минутната стойност винаги е над броя процесори, трябва да се търси корена на проблема.
  Ако си пуснал сериозна задача - компресиране например, нормално е Л.А. да се задържи висок.
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Top и load average
« Отговор #5 -: Oct 04, 2006, 23:30 »
Все пак съветвам ама МНОГО съветвам да не се доверяваш на loadavg по отношение на това доколко реално е натоварена една система. Нещата обикновено са много по-сложни от това. Това най-просто се илюстрира ако си напишеш една програма реализираща безкраен цикъл
примерно така:

void main() {for (;'<img'> {} }

и я пускаш. След малко loadavg ще стане 1 (+досегашния). Пускаш я в още една конзола, увеличава се с още 1. И т.н. Можеш да я пуснеш в още 5 конзоли, при което общата производителност няма да спадне много - пак ще си правиш каквото си правиш без да го усетиш много.

Това е защото няма почти никакво натоварване върху паметта, вход/изход системата, мрежата и т.н. Task scheduler-a ще си прави без проблеми context switch-овете там.

От друга страна, откакто замениха linuxthreads с NPTL, един процес може да има хиляди нишки, всички извършващи някаква дейност, понякога тежко товарещи системата. Всички те се водят един процес, т.е и 20000 нишки да са, няма да вдигнат loadavg с повече от 1 (но пък честно казано не съм проверявал)

loadavg стойност над броя процесори може да е индикация за много неща, не определено за това че капацитетът на процесорите е изчерпан. Може да е въпрос на бавен достъп до дисковете, а да има много процеси които се бият за достъп до тях. На пренатоварена мрежов интерфейс, който вдига прекъсване всеки път като получи етернет фрейм и така не оставят процесорно време за потребителските процеси. Повечето от тези неща трудно ще ги разбереш със top, но sar от друга страна помага '<img'> Виждал съм loadavg от над 200 на машина, маунт-нала отдалечена самба директория като локална файлова система (при нарушена свързаност с машината). От отдалечената самба се изпълняват байнърита през крон-а всяка минута. За няколко часа нещата стават....loadavg над 200. И такам.

top има хубави възможности въпреки всичко. Може да покаже и нишките на процеса както и на кой процесор се изпълняват. Може да покаже на коя функция процесът "спи". И т.н.



Активен

"Knowledge is power" - France is Bacon

0FF1

  • Напреднали
  • *****
  • Публикации: 127
    • Профил
Top и load average
« Отговор #6 -: Oct 05, 2006, 01:44 »
Ако искаш някакъв реален поглед за натоварването на системаат .. използвай mrtg и nmap или някакъв bash script да ти начертае едни графики и това e '<img'>
Активен

PEOPLE = S H I T!

choko

  • Напреднали
  • *****
  • Публикации: 64
  • Distribution: Slackware 9,10,11,12,13
  • Window Manager: Gnome
    • Профил
Top и load average
« Отговор #7 -: Oct 05, 2006, 16:32 »
Благодаря на Всички отговорили '<img'>
Достатъчна информация '<img'>
Активен

Ползвай Linux! От четене по форумите не остава време за секс;)
И пак по-добре!!!!!!!!!!!!!!!! :))))))))))))))))))))))))))))))))))))))))))))

astronom

  • Напреднали
  • *****
  • Публикации: 254
    • Профил
Top и load average
« Отговор #8 -: Oct 05, 2006, 17:12 »
Цитат (gat3way @ Окт. 04 2006,22:03)
Няма "нормални" стойности. А и няма значение дали е на 2,4,8,64 процесорна машина - обикновено машините с повече процесори вършат повече работа '<img'> За мене лично стойности над 1 са обезпокоителни и почвам да се ровя да видя какъв е проблема. Ако по принцип loadavg ти е 0.3 да речем и изведнъж скочи над 1 и стои така над 15 минути значи очевидно нещо не е наред. За жалост диагностицирането на проблема не винаги е тривиално.

Да, наистина няма нормални стойности! Още повече, че стойности от порядъка на 1-5 за 1 минута са нормални дори за десктоп система. При сървърите нещата отиват дори до 150 - 200 процеса за минута. Не мисля, че стойност от 1 е притеснителна дори за дълго време. По скоро притеснително е ако даден процес заема прекалено дълго процесора и то безсмислено, но това се диагностицира по-добре с top и според мен е "тривиално".



Активен

Г. Д. Сотиров

astronom

  • Напреднали
  • *****
  • Публикации: 254
    • Профил
Top и load average
« Отговор #9 -: Oct 05, 2006, 17:24 »
Цитат (gat3way @ Окт. 04 2006,23:30)
loadavg стойност над броя процесори може да е индикация за много неща, не определено за това че капацитетът на процесорите е изчерпан.

Това е невярно! Най-общо казано load average е броя на процесите в опашката за изпълнение (run queue) за едница време (най-често 1/5/15 минути). Това няма нищо общо с броя на процесорите, защото както знаете има времеделене и всеки процес получава полагащото му се процесорно време спрямо приоритета си. Така, че няма нищо странно в load average за последната минута от 3.75 на еднопроцесорна машина.
Активен

Г. Д. Сотиров

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Top и load average
« Отговор #10 -: Oct 05, 2006, 17:39 »
150-200 running процеса? Уау, тия задачи явно страдат от безсъние, всичките никъде не срещат blocking операции съответно не sleep-ват '<img'>

Тривиално?  Хм, да речем че процентите CPU usage от top са меродавен критерии. Какво ще направиш на една production машина, ще утрепеш виновния процес?

Мммм...не ми допадат тези идеи, въпреки че определено не е моя работа какво правите '<img'>

Цитат
Най-общо казано load average е броя на процесите в опашката за изпълнение (run queue) за едница време (най-често 1/5/15 минути). Това няма нищо общо с броя на процесорите, защото както знаете има времеделене и всеки процес получава полагащото му се процесорно време спрямо приоритета си


Хммм, като имаш няколко процесора обикновено task scheduler-a е smp/numa-aware. Ако имаш 2 процесора и 4 running процеса, 2 от тях ще се изпълняват и 2 ще стоят на опашката. Ако имаш един процесор и отново 4 running процеса, един ще се изпълнява и три ще висят в опашката.

Съответно ако това състояние се запази над една минута, първата стойност на loadavg ще бъде съответно в първия случай около 2, във втория около 3. Въпросът е че повечето приложения по време на изпълнението си все в един момент стигат до някаква blocking операция: дали ще е очакване на вход от конзолата, дали ще чакат някакъв пакет от мрежата, дали нещо друго, няма значение. Затова е и примера със празния безкраен цикъл където няма такава операция и за една минута изпълнение loadavg/мин се увеличава с 1 - т.е процесът през цялото време е бил в running state.

Така че loadavg има толкова общо с броя процесори колкото общо има и с броя на процесите в "Running" състояние.



Активен

"Knowledge is power" - France is Bacon

astronom

  • Напреднали
  • *****
  • Публикации: 254
    • Профил
Top и load average
« Отговор #11 -: Oct 06, 2006, 11:17 »
Цитат (gat3way @ Окт. 05 2006,17:39)
Така че loadavg има толкова общо с броя процесори колкото общо има и с броя на процесите в "Running" състояние.

Напротив има! За доказателство може да се разгледа кода на ядрото:
kernel/timer.c, line 864
kernel/timer.c, line 843
kernel/sched.c, line 1669

Може да се направи извода, че load average (поне в Linux) e броя на изпълняващите се процеси и процесите в състояние uninterruptible за единица време върху всички процесори. Иначе казано броя на процесите в опашката за изпълнение за единица време.

Ако не се лъжа точно ти свърза броя на процесорите с load average-а:
Цитат (gat3way @ Окт. 04 2006,23:30)
loadavg стойност над броя процесори може да е индикация за много неща, не определено за това че капацитетът на процесорите е изчерпан.




Активен

Г. Д. Сотиров

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Top и load average
« Отговор #12 -: Oct 06, 2006, 16:18 »
Цитат


Така че loadavg има толкова общо с броя процесори колкото общо има и с броя на процесите в "Running" състояние.

Напротив има! За доказателство може да се разгледа кода на ядрото:



Добре, къде видя да съм писал че нямат?  '<img'>

Цитат
Може да се направи извода, че load average (поне в Linux) e броя на изпълняващите се процеси и процесите в състояние uninterruptible за единица време върху всички процесори. Иначе казано броя на процесите в опашката за изпълнение за единица време.

и:
Цитат
Накратко трите числа показват колко процеса са стояли в опашката чакащи за процесорно време средно в последната 1/5/15 минути.


За какво точно спорим ? '<img'>



Активен

"Knowledge is power" - France is Bacon

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Load balancing
Начини за увеличаване на бързодействието
KNK 2 4261 Последна публикация Feb 18, 2003, 13:30
от KNK
Imapd load average
Настройка на програми
biliman 14 2528 Последна публикация Oct 26, 2007, 22:38
от biliman
Ubuntu 9.10 can't load - РЕШЕН
Настройка на програми
H0lyGanGs7eR 6 2194 Последна публикация Oct 21, 2009, 09:57
от jivkojj
Висок load при четене/писане на диска на 64 битова система
Настройка на програми
senser 19 4712 Последна публикация Jul 09, 2010, 15:37
от senser
load!?
Настройка на програми
ilian_BIOS 16 4409 Последна публикация Jan 30, 2012, 12:13
от ilian_BIOS