ค้นหาเว็บไซต์

ทำความเข้าใจค่าเฉลี่ยโหลด Linux และติดตามประสิทธิภาพของ Linux


ในบทความนี้ เราจะอธิบายงานการดูแลระบบ Linux ที่สำคัญงานหนึ่ง – การตรวจสอบประสิทธิภาพที่เกี่ยวข้องกับโหลดระบบ/CPU และค่าเฉลี่ยโหลด

ก่อนที่เราจะไปไกลกว่านี้ มาทำความเข้าใจสองวลีสำคัญนี้ในระบบที่คล้ายกับ Unix ทั้งหมดก่อน:

  • โหลดของระบบ/โหลด CPU – คือการวัด CPU ที่มากเกินไปหรือน้อยเกินไปในระบบ Linux จำนวนกระบวนการที่กำลังดำเนินการโดย CPU หรืออยู่ในสถานะรอ
  • ค่าเฉลี่ยโหลด – คือโหลดเฉลี่ยของระบบที่คำนวณในช่วงเวลาที่กำหนด 1, 5 และ 15 นาที

ใน Linux เชื่อกันว่าค่าเฉลี่ยโหลดเป็นค่าเฉลี่ยของกระบวนการในคิวการดำเนินการ (เคอร์เนล) ที่ติดแท็กว่าทำงานอยู่หรือไม่หยุดชะงัก

โปรดทราบว่า:

  • ทั้งหมดหากไม่ใช่ระบบส่วนใหญ่ที่ขับเคลื่อนโดย Linux หรือระบบที่คล้าย Unix อื่น ๆ อาจแสดงค่าเฉลี่ยการโหลดที่ใดที่หนึ่งสำหรับผู้ใช้
  • ระบบ Linux ที่ไม่ได้ใช้งานโดยสิ้นเชิงอาจมีค่าเฉลี่ยการโหลดเป็นศูนย์ ไม่รวมกระบวนการที่ไม่ได้ใช้งาน
  • ระบบที่คล้าย Unix เกือบทั้งหมดนับเฉพาะกระบวนการที่อยู่ในสถานะกำลังทำงานหรือรออยู่ แต่นี่ไม่ใช่กรณีของ Linux เนื่องจากมีกระบวนการในสถานะสลีปอย่างต่อเนื่อง ผู้ที่รอทรัพยากรระบบอื่นๆ เช่น ดิสก์ I/O เป็นต้น

วิธีตรวจสอบค่าเฉลี่ยการโหลดระบบ Linux

มีหลายวิธีในการตรวจสอบค่าเฉลี่ยโหลดของระบบ รวมถึงเวลาทำงานซึ่งแสดงระยะเวลาที่ระบบทำงาน จำนวนผู้ใช้พร้อมค่าเฉลี่ยโหลด:

uptime

07:13:53 up 8 days, 19 min,  1 user,  load average: 1.98, 2.15, 2.21

ตัวเลขจะอ่านจากซ้ายไปขวา และผลลัพธ์ด้านบนหมายความว่า:

  • โหลดเฉลี่ยในช่วง 1 นาทีสุดท้ายคือ 1.98
  • โหลดเฉลี่ยในช่วง 5 นาทีที่ผ่านมาคือ 2.15
  • โหลดเฉลี่ยในช่วง 15 นาทีที่ผ่านมาคือ 2.21

ค่าเฉลี่ยโหลดสูงบ่งบอกว่าระบบมีโอเวอร์โหลด กระบวนการจำนวนมากกำลังรอเวลาของ CPU

เราจะเปิดเผยเรื่องนี้ในส่วนถัดไปที่เกี่ยวข้องกับจำนวนคอร์ CPU นอกจากนี้ เรายังสามารถใช้เครื่องมืออื่นๆ ที่รู้จักกันดี เช่น top และเหลือบซึ่งแสดงสถานะแบบเรียลไทม์ของระบบ Linux ที่ทำงานอยู่ รวมถึงเครื่องมืออื่นๆ อีกมากมาย:

คำสั่งยอดนิยม

top
top - 12:51:42 up  2:11,  1 user,  load average: 1.22, 1.12, 1.26
Tasks: 243 total,   1 running, 242 sleeping,   0 stopped,   0 zombie
%Cpu(s): 17.4 us,  2.9 sy,  0.3 ni, 74.8 id,  4.6 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8069036 total,   388060 free,  4381184 used,  3299792 buff/cache
KiB Swap:  3906556 total,  3901876 free,     4680 used.  2807464 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                        
 6265 tecmint   20   0 1244348 170680  83616 S  13.3  2.1   6:47.72 Headset                                                                                                                                        
 2301 tecmint    9 -11  640332  13344   9932 S   6.7  0.2   2:18.96 pulseaudio                                                                                                                                     
 2459 tecmint   20   0 1707692 315628  62992 S   6.7  3.9   6:55.45 cinnamon                                                                                                                                       
 2957 tecmint   20   0 2644644 1.035g 137968 S   6.7 13.5  50:11.13 firefox                                                                                                                                        
 3208 tecmint   20   0  507060  52136  33152 S   6.7  0.6   0:04.34 gnome-terminal-                                                                                                                                
 3272 tecmint   20   0 1521380 391324 178348 S   6.7  4.8   6:21.01 chrome                                                                                                                                         
 6220 tecmint   20   0 1595392 106964  76836 S   6.7  1.3   3:31.94 Headset                                                                                                                                        
    1 root      20   0  120056   6204   3964 S   0.0  0.1   0:01.83 systemd                                                                                                                                        
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd                                                                                                                                       
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.10 ksoftirqd/0                                                                                                                                    
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H   
....

เครื่องมือเหลือบมอง

glances
TecMint (LinuxMint 18 64bit / Linux 4.4.0-21-generic)                                                                                                                                               Uptime: 2:16:06

CPU      16.4%  nice:     0.1%                                        LOAD    4-core                                        MEM     60.5%  active:    4.90G                                        SWAP      0.1%
user:    10.2%  irq:      0.0%                                        1 min:    1.20                                        total:  7.70G  inactive:  2.07G                                        total:   3.73G
system:   3.4%  iowait:   2.7%                                        5 min:    1.16                                        used:   4.66G  buffers:    242M                                        used:    4.57M
idle:    83.6%  steal:    0.0%                                        15 min:   1.24                                        free:   3.04G  cached:    2.58G                                        free:    3.72G

NETWORK     Rx/s   Tx/s   TASKS 253 (883 thr), 1 run, 252 slp, 0 oth sorted automatically by cpu_percent, flat view
enp1s0     525Kb   31Kb
lo           2Kb    2Kb     CPU%  MEM%  VIRT   RES   PID USER        NI S    TIME+ IOR/s IOW/s Command 
wlp2s0        0b     0b     14.6  13.3 2.53G 1.03G  2957 tecmint      0 S 51:49.10     0   40K /usr/lib/firefox/firefox 
                             7.4   2.2 1.16G  176M  6265 tecmint      0 S  7:08.18     0     0 /usr/lib/Headset/Headset --type=renderer --no-sandbox --primordial-pipe-token=879B36514C6BEDB183D3E4142774D1DF --lan
DISK I/O     R/s    W/s      4.9   3.9 1.63G  310M  2459 tecmint      0 R  7:12.18     0     0 cinnamon --replace
ram0           0      0      4.2   0.2  625M 13.0M  2301 tecmint    -11 S  2:29.72     0     0 /usr/bin/pulseaudio --start --log-target=syslog
ram1           0      0      4.2   1.3 1.52G  105M  6220 tecmint      0 S  3:42.64     0     0 /usr/lib/Headset/Headset 
ram10          0      0      2.9   0.8  409M 66.7M  6240 tecmint      0 S  2:40.44     0     0 /usr/lib/Headset/Headset --type=gpu-process --no-sandbox --supports-dual-gpus=false --gpu-driver-bug-workarounds=7,2
ram11          0      0      2.9   1.8  531M  142M  1690 root         0 S  6:03.79     0     0 /usr/lib/xorg/Xorg :0 -audit 0 -auth /var/lib/mdm/:0.Xauth -nolisten tcp vt8
ram12          0      0      2.6   0.3 79.3M 23.8M  9651 tecmint      0 R  0:00.71     0     0 /usr/bin/python3 /usr/bin/glances
ram13          0      0      1.6   4.8 1.45G  382M  3272 tecmint      0 S  6:25.30     0    4K /opt/google/chrome/chrome 
...

ค่าเฉลี่ยการโหลดที่แสดงโดยเครื่องมือเหล่านี้คือไฟล์อ่าน /proc/loadavg ซึ่งคุณสามารถดูได้โดยใช้คำสั่ง cat ดังต่อไปนี้:

cat /proc/loadavg

2.48 1.69 1.42 5/889 10570

หากต้องการตรวจสอบค่าเฉลี่ยการโหลดในรูปแบบกราฟ ให้ลองดู: ttyload – แสดงกราฟรหัสสีของ Linux Load Average ใน Terminal

บนเครื่องเดสก์ท็อป มีเครื่องมืออินเทอร์เฟซผู้ใช้แบบกราฟิกที่เราสามารถใช้เพื่อดูค่าเฉลี่ยโหลดของระบบ

ทำความเข้าใจเกี่ยวกับโหลดเฉลี่ยของระบบในจำนวนความสัมพันธ์ของ CPU

เราไม่สามารถอธิบายโหลดของระบบหรือประสิทธิภาพของระบบได้โดยไม่ให้ความกระจ่างเกี่ยวกับผลกระทบของจำนวนแกน CPU ที่มีต่อประสิทธิภาพ

มัลติโปรเซสเซอร์ Vs มัลติคอร์

  • มัลติโปรเซสเซอร์ – คือที่ที่ CPU ทางกายภาพตั้งแต่สองตัวขึ้นไปถูกรวมเข้ากับระบบคอมพิวเตอร์เครื่องเดียว
  • โปรเซสเซอร์แบบมัลติคอร์ – คือ CPU จริงตัวเดียวที่มีคอร์แยกกันอย่างน้อยสองคอร์ขึ้นไป (หรือที่เราเรียกอีกอย่างว่าหน่วยประมวลผล) ที่ทำงานแบบขนาน ความหมายแบบดูอัลคอร์มี 2 หน่วยประมวลผล 2 หน่วย ควอดคอร์มี 4 หน่วยประมวลผลและอื่นๆ

นอกจากนี้ยังมีเทคโนโลยีโปรเซสเซอร์ที่ Intel เปิดตัวครั้งแรกเพื่อปรับปรุงการประมวลผลแบบขนาน ซึ่งเรียกว่าไฮเปอร์เธรด

ภายใต้ไฮเปอร์เธรดing CPU คอร์จริงตัวเดียวจะปรากฏเป็นคอร์โลจิคัล CPU สองตัวในระบบปฏิบัติการ (แต่ในความเป็นจริงแล้ว มีส่วนประกอบฮาร์ดแวร์กายภาพหนึ่งองค์ประกอบ)

โปรดทราบว่า CPU คอร์เดี่ยวสามารถทำงานได้ครั้งละหนึ่งงานเท่านั้น ดังนั้นเทคโนโลยีต่างๆ เช่น CPU/โปรเซสเซอร์หลายตัว, CPU แบบมัลติคอร์ และไฮเปอร์เธรดจึงถูกทำให้เป็นจริงขึ้นมา

เมื่อมี CPU มากกว่าหนึ่งตัว จึงสามารถรันโปรแกรมหลายโปรแกรมพร้อมกันได้ CPU Intel ในปัจจุบันใช้การผสมผสานระหว่างหลายคอร์และเทคโนโลยีไฮเปอร์เธรด

ในการค้นหาจำนวนหน่วยประมวลผลที่มีอยู่ในระบบ เราอาจใช้คำสั่ง nproc หรือ lscpu ดังต่อไปนี้:

nproc
4

OR
lscpu

อีกวิธีหนึ่งในการค้นหาจำนวนหน่วยประมวลผลโดยใช้คำสั่ง grep ดังรูป

grep 'model name' /proc/cpuinfo | wc -l

4

ตอนนี้ เพื่อทำความเข้าใจโหลดของระบบเพิ่มเติม เราจะใช้สมมติฐานบางประการ สมมติว่าเรามีค่าเฉลี่ยการโหลดด้านล่าง:

23:16:49 up  10:49,  5 user,  load average: 1.00, 0.40, 3.35
บนระบบคอร์เดียว สิ่งนี้จะหมายถึง:
  • CPU ถูกใช้งานอย่างเต็มที่ (100%) โดยเฉลี่ย; 1 กระบวนการทำงานบน CPU (1.00) ในช่วง 1 นาทีที่ผ่านมา
  • CPU ไม่ได้ใช้งานโดยเฉลี่ย 60%; ไม่มีกระบวนการใดกำลังรอเวลา CPU (0.40) ในช่วง 5 นาทีที่ผ่านมา
  • CPU ถูกโอเวอร์โหลดโดยเฉลี่ย 235%; กระบวนการ 2.35 กำลังรอเวลา CPU (3.35) ในช่วง 15 นาทีที่ผ่านมา
บนระบบดูอัลคอร์จะหมายถึง:
  • CPU หนึ่งตัวไม่ได้ใช้งานโดยเฉลี่ย 100% มีการใช้งาน CPU หนึ่งตัว ไม่มีกระบวนการใดกำลังรอเวลา CPU (1.00) ในช่วง 1 นาทีที่ผ่านมา
  • CPU ไม่ได้ใช้งานโดยเฉลี่ย 160%; ไม่มีกระบวนการใดกำลังรอเวลา CPU (0.40) ในช่วง 5 นาทีที่ผ่านมา
  • ซีพียูโอเวอร์โหลดโดยเฉลี่ย 135%; กระบวนการ 1.35 กำลังรอเวลา CPU (3.35) ในช่วง 15 นาทีที่ผ่านมา

คุณอาจต้องการ:

  1. 20 เครื่องมือบรรทัดคำสั่งเพื่อตรวจสอบประสิทธิภาพของ Linux – ตอนที่ 1
  2. 13 เครื่องมือตรวจสอบประสิทธิภาพ Linux – ตอนที่ 2
  3. Perf- เครื่องมือตรวจสอบและวิเคราะห์ประสิทธิภาพสำหรับ Linux
  4. Nmon: วิเคราะห์และตรวจสอบประสิทธิภาพของระบบ Linux

โดยสรุป หากคุณเป็นผู้ดูแลระบบ ค่าเฉลี่ยการโหลดที่สูงก็เป็นเรื่องที่น่ากังวล เมื่อมีจำนวนคอร์ CPU สูง แสดงว่าความต้องการ CPU สูง และโหลดเฉลี่ยที่ต่ำกว่าจำนวนคอร์ CPU ต่ำ บอกเราว่า CPU มีการใช้งานน้อยเกินไป