субота, 20 априла, 2024
Како да...?

Администрација линукс система – Праћење перформанси система (1. део)

Аутор: Михајло Богдановић

Увод

Сваки рачунар на свету има свог администратора система. По дефиницији администратор GNU/Linux система је особа која има потпун приступ, односно особа која је суперкорисник (root). Између осталих дужности, администратор треба да има увид у рад свог система. У наредном делу овог текста видећемо неколико основних наредби/алатки (команди/програма) за надгледање и праћење перформанси GNU/Linux система. То би чиниле следеће области: опште оптерећење система, надгледање активних процеса, заузеће системске меморије, заузеће диска са његовим перформансама и надгледање рада у мрежи нашег GNU/Linux система.

Опште стање система

uptime

Да би сте стекли известан утисак о општем стању перформанси система можете користити команду uptime

Пример

  bash-4.1$ uptime
   15:39:11 up  3:13,  3 users,  load average: 0.08, 0.03, 0.05

Команда uptime ће показати колико је корисника пријављено и колико је просечно оптерећење система током последњих 1, 5 и 15 минута. Као што се може видети на примеру, оптерећење током последњег минута било је 0.08, током последњих пет минута 0.03 и током последњих петнаест минута 0.05. Ипак је ово јако “груб” приказ оптерећености система.

sar

Команда sar је скраћеница од system activity report (извештај о активности система). За разлику од uptime, команда sar даје много поузданије податке.

Пример

Наведена наредба налаже команди sar да у интервалима од броја задатих секунди (у овом случају пет секунди) узме одговарајући број узорака (такође у овом случају пет узорака). Опцијом -u постижемо да команда sar прикаже искоришћење процесора.

%user – означава проценат процесорског времена утрошеног на извршавање корисничког кода, углавном програма
%nice – је проценат процесорског времена утрошеног на извршавање корисничког кода промењеног приоритета
%system – означава време утрошено на извршавање системског кода (кернел и позиви систему)
%idle – показује колико времена процесор није ништа радио

Више информација можете наћи у датотеци/записнику /usr/lib/sa/sadc.

vi /usr/lib/sa/sadc

xload

Ако вам је тако лакше оптерећење система можете пратити преко програма xload који даје информације у графичком облику.

  xload

Надгледање активних процеса

Команда ps је одлично оруђе за надгледање активираних процеса вашег система. Најкориснија је у комбинацији са опцијом -el (ps -el). Опција -e излистава податке о сваком активираном процесу док опција -l прави дугачак листинг са подацима.

Пример

Поље опис
F – садржи збир једне или више хексадецималних вредности које описују актуелно стање процеса
S – приказује актуелно стање процеса по принципу: извршава се, привремено заустављен итд…)
UID – приказује идентификатор власника процеса
PID – приказује идентификатор процеса
PPID – приказује идентификатор “старијег” процеса
C – приказује заузеће процесора процесом
PRI – приказује приоритет процеса по принципу већи број већи приоритет
NI – приказује измену приоритета процеса помоћу команде nice по принципу већи број означава нижи приоритет
SZ – приказује количину виртуелне меморије потребне за извршавање процеса
TTY – означава терминал са којег је процес покренут
TIME – приказује укупно процесорско време у сатима и минутима утрошено на извршавање процеса
CMD – приказује команду која је покренула процес

Заузеће меморије

Помоћу команде vmstat можемо испитати подсистем виртуелне меморије и пронаћи евентуални проблем. Команда vmstat приказује статистику коришћења подсистема виртуелне меморије, оптерећење процесора и податке о активности диска и процесора. Општи облик те наредбе је

  vmstat [interval] [broj]

Команда vmstat у интервалима (задатим у секундама) узима одговарајући број узорака и резултате приказује у стандардном излазном току

Добијени резултати су наизглед тешко читљиви. Први ред сваког извештаја команде vmstat приказује само збирне информације. Следећи редови приказују информације које можемо да искористимо за откривање евентуалног проблема са меморијом.

поље procs
r – број процеса спремних за извршавање
b – број заустављених процеса

поље memory
swpd – количина коришћене виртуелне меморије у килобајтима
free – количина недодељене меморије у килобајтима
buff – количина међумеморије (енгл. buffer) у килобајтима
cache – количина меморијске оставе (енгл. cache) у килобајтима

поље swap
si – брзина преноса података из виртуелне меморије у радну меморију у KB/s
so – брзина преноса података из радне у виртуелну меморију у KB/s

поље io
bi – број блокова података записаних у секунди на улазно-излазни уређај
bo – број блокова података прочитаних у секунди са улазно-излазног уређаја

поље system
in – број прекида у секунди изазваних уређајима
cs – број промена контекста процеса у секунди

поље cpu
us – проценат процесорског времена утрошеног на извршавање корисничког кода
sy – проценат процесорског времена утрошеног на извршавање системског кода
id – проценат неутрошеног процесорског времена

У овим пољима треба обратити пажњу на коришћење укупне и виртуелне меморије. Када је расположива виртуелна меморија (приказана у килобајтима у пољу swpd) мала, систем са њом интензивно размењује податке па су перформансе вероватно због тога слабиje. Тада треба употребити команду ps да би се открио процес или процеси који интензивно користе виртуелну меморију. Углавном трајно решење је у додавању још RAM-a.

Ако је у колони wa вредност различита од нуле, а вредности у колонама so и si указују на непрестану размену са виртуелном меморијом, потражите процес који опсежно заузима меморију, нарочито виртуелну. Ако дуже посматрате колоне r и b стећи ћете утисак о брзини проласка процеса кроз ред чекања на извршавање, вредност у колони r и b треба стално да буду мале, осим код дуготрајних процеса које такође лако можете да откријете са командом ps.

Команда free приказује коришћење меморије, укључујући виртуелну меморију са расположивом количином. За једно умерено оптерећење системa добићете отприлике следеће резултатеНасупрот горњем приказу ево примера где је меморија прилично оптерећена

Команда free приказује снимак коришћења меморије који можете да обухватите једним погледом. Први ред испод заглавља показује податке о физичкој (радној) меморији у килобајтима, укључујући укупну количину RAM-а, његов не увек и искоришћен део који заузима језгро оперативног система, количину слободног RAM-а и делове RAM-а намењеног дељењу, међумеморији и остави.

Други ред се односи на коришћење међумеморије. Другим речима, команда free одузима предвиђену међумеморију и оставу од колоне used и резултат смешта у колону free тако да добијамо тачнију слику коришћења меморије у односу на заузеће у језгру оперативног система, она се мења у зависности од искоришћења система и просечног коришћења меморије. Ако у првом реду вредност buffers и cached одузмете од вредности коришћене меморије добићете вредност (за први приказ) 311204 (1471564−282812−877548=311204), док додавањем вредности buffers и cached на вредност free добијамо 3890644 (2135548+877548+877548=3890644) што је око 12,5 пута више.

Трећи ред приказује количину расположиве, коришћене и слободне виртуелне меморије која је у време снимања система била некоришћена у оба снимка.

Ови подаци се могу видети и у графичком приказу, све у зависности које графичко окружење користите. Рецимо System Monitor у GNOME графичком окружењу.

Закључак

У овом делу смо могли видети неке најосновније програме попут uptime, xload, free и System Monitor које користе сви корисници без обзира на степен знања и амбиције али и нешто напредније попут команди sar, ps и vmstat.

У наредном броју следи наставак где ћемо се бавити темама заузећa диска и коришћење процеса.