Htop, top monitoringlardan ma'lumotlar olish.
Published: 2024-05-05 14:38:07

Keling oldin monitoring haqida ikki og'iz gaplashamiz. Agar real hayotdan misol qilsak bizga ma'lum vaqt oralig'idagi biror jarayonlar haqida ma'lumotlar kerak. Aytaylik xozirda hamma foydalanadigan to'lov tizimlaridagi kirim va chiqim monitoringi. Deyarli barcha dasturlarda siz ma'lum vaqt oralig'ida sizning bank kartangizga qancha pul kirgan va chiqgani haqidagi ma'lumotlarni olishingiz mumkin. Bu ma'lumotlar asosida siz keyingi moliyaviy masalaga doir rejalaringizni qilasiz. Ya'ni agar siz pulni tejamoqchi bo'lsangiz ko'rishingiz mumkin so'ngi oylarda aynan qandaydir chiqimlarni kamaytirish uchun xozirda qancha chiqim qilayotganingiz haqidagi ma'lumotni olasiz. Monitoringdan ko'ringizki har kuni coffe uchun 20ming so'm pul sarflayabsiz, tushlik uchun 30-40ming, transport va boshqa harajatlar uchun esa 10ming so'm. So'ngi 6 oylikda qilingan barcha chiqimlarnini biror to'lov tizimidan oldingiz. Endi siz chiqimlarni kamaytirish uchun o'z qaroriningizni qilasiz. Boshqa tomondan qarasak siz bir faktorga asoslangan ma'lumotlarni qayta ishlab aynan o'sha masalaga nisbatan chora ko'rmoqchisiz. Bu holatda asosiy faktor umumiy chiqimlar ko'p ekani. Ushbu ma'lumotlarga ega bo'lishingiz uchun biror to'lo'v tizimi ilovasidan foydalandingiz. Endi navbat yechimga va yechim ham turlicha bo'lishi mumkin. Masalan boshida pulni tejashni niyat qilgan edik ammo yana boshqa g'oya keldi ko'proq daromat qilishga chiqish kerak. Vaziyatni yana bir analiz qilamiz. Demak sizda qandaydir muammo bor edi lekin aniq dalilingiz yo'q. Muammo sizda xarajatlar ko'p ekani, bu masalga aniqlik kiritish uchun sizga monitoring aniq asosli ma'lumotlarni taqdim qildi endi shuni asosida yechim qilasiz. Hammamiz bilamizki pul bu universal tovar yoki resurs va bu resurs ham cheklangan. 

Sohamizda ham huddi shunday bizning resurslarimiz cheklangan. Shu sababdan aynan qaysi resurs qayerga sarf bo'layotganini kuzatish va aniqlash eng muhim mavzulardan biri xisoblanadi. Buning uchun ham huddi biz to'lov tizimlarida ko'rib chiqganimiz kabi monitoring dasturlar mavjud. Ushbu dasturlar tur maqsadga va imkoniyatlarga ega. Bazilari umumiy, sodda bo'lsa bazilari juda ham batafsil va maxsus ma'lumotlarni bizga taqdim qiladi. Ammo bugun biz oddiy va sodda monitoring tizimlar yani top, htop kabi sodda posix dasturlar bizga qanday ma'lumotlarni taqdim qilishi haqida ko'rib chiqamiz.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/usqxo7sxmikzjid9628m.png)

htop yoki top dasturlarida ko'rib turganingizdak birqancha columnlar mavjud:

**PID**: [Process id](https://www.gnu.org/software/libc/manual/html_node/Process-Identification.html). Bilamizki operatsion tizimda barcha jarayonlar(process) ma'lum identifikatorlar bilan belgilanadi va biz barcha jarayonlarga aloqador amaliyotlarni ushbu identificatorlar asosida hal etishimiz mumkin.

```bash
kill <PID>
kill $(lsof -t -i:8080)
```

**USER**: Barcha mashxur operatsion tizimlarda alohida user managment mavjud. Barcha processlarning egasi esa userlar.

PR: Posix tizimlarda jarayonlarning [prioriteti](https://www.gnu.org/software/libc/manual/html_node/Priority.html) mavjud. Prioritetlar biror jarayonga nisbatan qanday resurs ajratilishini aniqlashda katta ahamiyatga ega.

**NI**: Yuqorida barcha resurslar cheklanganligini takidlagan edik. Shu sababdan Operatsion tizimlarda turli resurslardan unumli foydalanish uchun juda ko'p yechimlar qilingan. Resurslarni boshqarishning eng asosiy mexanizmi sifatida biz OS schedulerni ko'rishimiz mumkin. Ushbu NI ustunida aynan CPU resurslaridan foydalanish haqida gap ketadi. OS scheduler resurslarni boshqarish uchun ham turlicha uslublardan foydalanadi. Shulardan biri [traditsional scheduling](https://www.gnu.org/software/libc/manual/html_node/Traditional-Scheduling-Intro.html). NI ustunida nice qiymat ko'rsatiladi. Ushbu qiymat OSdagi processlarga resurs ajratishni prioritetizatsiya qilishning yana bir uslubi uchun kerak. Bu uslub dinamik prioritet asosida bo'ladi. Soddaroq aytadigan bo'lsak prioritet uchun ajratilgan nice ma'lum oraliqdagi qiymatlarni o'z ichiga oladi -20dan 20gacha bo'lgan oraliqni. Kegin ushbu qiymat asosida ushbu process uchun ma'lum vaqt CPU ajratilinadi. Qiymat qancha katta bo'lsa shuncha ko'proq vaqt ajratilinadi. Standart holatda esa nice qiymati 0 ga teng bo'ladi.

**VIRT**: Process sarflayotgan virtual hotira ko'rsatkichi [batafsil](https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/9_VirtualMemory.html)

**RES**: Process sarflayotgan hotira ko'rsatkichi [batafsil](https://en.wikipedia.org/wiki/Resident_set_size)

**SHR**: Process sarflanayotgan umumiy hotira(shared memory).

**S**: Process statusi (zombied, sleeping, running etc...) [batafsil](https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/3_Processes.html)

**%CPU**: Process sarflayotgan CPU vaqtining foizi.

**%MEM**: Process sarflayotgan hotira(RAM) foizi.

**TIME+**: Process uchun qancha CPU vaqti ishlatilgan.

**COMMAND**: Jarayonni boshlagan buyruqning nomi.

Yuqoridagi faktorlar orqali biz eng umumiy ma'lumotlarga ega bo'lgan holatda bizning muhitimizda nima bo'layotganini tushunishimiz mumkin. Masalan agar bizni dasturimiz ko'p hotira sarflayotgan bo'lsa demak **%MEM** ustuniga qarab birinchi hulosaga ega bo'lishimiz mumkin. Eng kamida shunday sodda monitoring tizimlar biror muammolarni hal etishimizda ishimizni ancha yengillashtiradi. Lekin ish jarayonida boshqa batafsil faktorlar ham kerak bo'ladi shu sababdan bunday ma'lumotlarga erishish uchun biz yana boshqa uskunalardan foydalanishimiz kerak.

Reference:

https://www.gnu.org/software/libc/manual/html_node/Process-Identification.html
https://www.gnu.org/software/libc/manual/html_node/Priority.html
https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/6_CPU_Scheduling.html
https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/8_MainMemory.html
https://core.ac.uk/download/534193555.pdf
https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/2_Structures.html
http://www.kohala.com/start/unpv22e/unpv22e.chap12.pdf
https://homes.cs.washington.edu/~levy/opal/opal-tocs.pdf
https://dl.acm.org/doi/pdf/10.1145/321738.321743
https://people.cs.rutgers.edu/~pxk/416/notes/07-scheduling.html