Most Recent

Seo Services
Results for Performance

Linux Training Course

Linux Training Course

รวบรวม Course อบรมสำหรับผู้สนใจเกี่ยวกับ Linux มีเนื้อหาครอบคลุมตั้งแต่ขั้นพื้นฐาน ระดับ admin และเนื้อหาเกี่ยวกับการตรวจสอบ Performance ระบบ

 Linux Basic Training

  • What is UNIX?
  • What is Linux?
  • Which Linux Distribution is better?
  • UNIX structures
  • Directories, Files, Inodes
  • File type
  • Access permissions
  • Special characters
  • Control characters
  • Pipes
  • Shell Variable
  • Process
  • Manual 
  • Login & Log out
  • Basic Commands
    • ls
    • cd, pwd
    • which, whereis
    • find, grep, file
    • su, sudo
    • rpm, yum, apt
    • cat, last, tail, touch
    • cp, mv, rm, ln, mkdir
    • chgrp, chsh, chmod, chown, newgrp, umask
    • id, whoami, who, w
    • ps, top
    • jobs, kill
    • tar, gzip
    • df, du, free
    • uname, hostname
    • fdisk
  • vi Editor


  • What is UNIX?
  • What is Linux?
  • Which Linux Distribution is better?
  • UNIX structures
  • Directories, Files, Inodes
  • File type
  • Access permissions


                                                                             Part 2/7

  • Special characters
  • Control characters


                                                                             Part 3/7

  • Control Character (Continue)
  • Pipes
  • Shell variable
  • Process
  • Manual (help)
  • Login & Log out
  • ls, cd, pwd, which, whereis, find, su
  • rpm, yum, apt
  • echo, cat
  • cp, mv, mkdir, rm
  • chgrp, chsh, chown, file, id, newgrp, grep


                                                                             Part 4/7

  • grep
  • chmod
  • umask


                                                                                Part 5/7

  • ln (hard, soft link)
  • last
  • Showing who is logged on (who, w)
  • tty
  • touch
  • more, tail
  • ps, top


                                                                                Part 6/7

  • nohup, jobs, kill
  • tar, gzip
  • df, du
  • uname, hostname
  • Showing disk partition
  • Showing CPU information
  • Showing memory information
  • Showing swap information
  • Showing network interface information
  • Showing network routing information


                                                                                 Part 7/7 

using vi Editor



Linux Administration Training

  • Kernel Configuration
  • User Administration
  • System Initialization
  • Process Management (cron)
  • Networking
  • Troubleshooting
  • Filesystem Management

Part 1/5

  • Kernel Configuration
  • User Administration


Part 2/5

  • User Administration (Continue)
  • System Initialization
  • Process Management (cron)


Part 3/5

  • Networking
  • Troubleshooting


Part 4/5 Filesystem Management

  • Partition Categories
  • SWAP partition
  • Partition Table
  • Manage Disk Partition


Part 5/5 Filesystem Management

  • Filesystem Integrity
  • Software RAID
  • LVM




Linux Performance Monitoring Training

• Major Resource

• Common performance concerns

• Numbers to notice

• Behaviors to notice

• Monitoring Tools

• OS Performance

• Performance Monitoring – CPU Utilization

• Performance Monitoring – Memory Utilization

• Performance Monitoring – I/O Utilization

• Performance Monitoring – network




หวังว่าคงช่วยให้ท่านที่สนใจได้รับความรู้ไม่มากก็น้อย

วิสูจน์ อมตาริยกุล


Linux Training Course Linux Training Course Reviewed by Wisoot Amatariyakul on 8:16 PM Rating: 5

คำสั่งที่ใช้ในการตรวจสอบ Performance บน Linux ตอนที่ 3:Disk I/O Utilization

บทความนี้จะอธิบายถึงการตรวจสอบประสิทธิภาพการทำงานของ Disk I/O บน Linux สำหรับคำสั่งที่จะนำมาใช้ในการตรวจสอบได้แก่ vmstat, iostat, sar


vmstat

รูปแบบคำสั่ง

vmstat  interval  [count]

       bi: จำนวน block ที่รับจาก block device (หน่วยเป็น blocks/วินาที)
       bo: จำนวน block ที่ส่งไปยัง block device (หน่วยเป็น blocks/วินาที)

ตัวอย่างเช่น ต้องการแสดงผลของ Disk I/O utilization ทุกๆ 2 วินาที จำนวน 5 ครั้ง

# vmstat 2 5


สำหรับ kernel version ตั้งแต่ 2.5.70 ขึ้นไป จะมี option -d , --disk ที่ใช้แสดงรายงานสถิติการใช้งาน disk

ตัวอย่างเช่น ต้องการแสดงผลของ Disk I/O utilization ทุกๆ 3 วินาที จำนวน 5 ครั้ง

# vmstat -d 3 5



iostat

เป็นคำสั่งที่แสดงรายงานการใช้งาน CPU และ I/O สำหรับ device และ partition

รูปแบบคำสั่ง

iostat  interval  [count]
iostat -xtzc interval [count]

-c      แสดงรายงานเกี่ยวกับ CPU Utilization
-t       แสดงเวลาสำหรับการแสดงรายงานแต่ละชุด
-x      แสดงรายงานสถิติการทำงานเพิ่มเติม   option นี้จะใช้ได้กับ kernel ตั้งแต่ version 2.5 ขึ้นไป
-z      ไม่แสดงสถิติการทำงานสำหรับ device ที่ไม่มี activity ใดๆ ในช่วงเวลานั้น

ผลลัพธ์ที่แสดง

ในส่วนของ CPU:
              %user     แสดง % CPU utilization ที่เกิดขึ้นขณะทำงานในระดับ user (application)

              %nice     แสดง % CPU utilization ที่เกิดขึ้นขณะทำงานในระดับ user กับการใช้ nice priority

              %system แสดง % CPU utilization ที่เกิดขึ้นขณะทำงานในระดับ system (kernel)

              %iowait  แสดง % ของเวลาที่ CPU ใช้ระหว่างที่ระบบรอ disk I/O พร้อมที่จะทำงาน

              %steal     แสดง % ของเวลาที่ใช้ในการรอของ virtual CPU หรือ CPU ขณะที่ hypervisor ให้บริการ virtual CPU ตัวอื่นอยู่

              %idle      แสดง % ของเวลาที่ CPU ไม่ถูกใช้งาน

ในส่วนของ Device หรือ partition:

              tps       ระบุจำนวนของการ transfer ข้อมูลไปยัง device ต่อวินาที

              Blk_read/s (kB_read/s, MB_read/s)
                          ระบุจำนวน block ของข้อมูลที่อ่านจาก device (kilobytes, megabytes) ต่อวินาที

              Blk_wrtn/s (kB_wrtn/s, MB_wrtn/s)
                          ระบุจำนวน block ของข้อมูลที่เขียนไปที่ device (kilobytes, megabytes) ต่อวินาที

              Blk_read (kB_read, MB_read)
                          จำนวน block ทั้งหมดที่อ่านจาก device (kilobytes, megabytes) ต่อวินาที

              Blk_wrtn (kB_wrtn, MB_wrtn)
                          จำนวน block ทั้งหมดที่เขียนไปที่ device (kilobytes, megabytes) ต่อวินาที

              r/s         จำนวนของคำขอเพื่ออ่านที่สำเร็จสำหรับ device ต่อวินาที

              w/s       จำนวนของคำขอเพื่อเขียนที่สำเร็จสำหรับ device ต่อวินาที

              avgrq-sz    ขนาดเฉลี่ยของการขอไปยัง device (sectors)

              avgqu-sz    ค่า queue length เฉลี่ยของการขอไปยัง device

              await          เวลาเฉลี่ย(วินาที) สำหรับการร้องขอ I/O ที่ถูกใช้กับ device เพื่อให้บริการตั้งแต่ต้นจนจบ (รวมถึงช่วงเวลาที่อยู่ในคิวและเวลาที่ให้บริการตามคำขอ)

               r_await       เวลาเฉลี่ย(วินาที) สำหรับการร้องขอ I/O สำหรับการอ่านที่ถูกใช้กับ device เพื่อให้บริการ
              w_await        เวลาเฉลี่ย(วินาที) สำหรับการร้องขอ I/O สำหรับการเขียนที่ถูกใช้กับ device เพื่อให้บริการ

              svctm            เวลาเฉลี่ยของการให้บริการ (service time) (หน่วยเป็น milliseconds) สำหรับการร้องขอ I/O ที่ถูกใช้กับ device

              %util           % ของเวลาที่เสียไประหว่างที่คำร้องขอ I/O ที่ถูกใช้กับ device (bandwidth utilization) device จะเกิดปัญหาการใช้งานเมื่อค่านี้เข้าใกล้ 100%
               %util ของ linux = (r/s + w/s)  * svctm /10        (เนื่องจาก svctm มีหน่วยเป็น millisecond จึงต้องหาร 10 เพื่อให้หน่วยเป็นวินาทีเหมือนกัน)

รายละเอียดของผลลัพธ์ค่าอื่น สามารถดูเพิ่มเติมได้จากคำสั่ง man iostat

ตัวอย่างผลลัพธ์จากคำสั่ง iostat แสดงรายงานการใช้งาน CPU และ I/O สำหรับ device และ partition ทุกๆ 2 วินาที จำนวน 3 ครั้ง

# iostat 2 3


ตัวอย่างผลลัพธ์จากคำสั่ง iostat แสดงรายงานการใช้งาน CPU และ I/O สำหรับ device และ partition ทุกๆ 3 วินาที โดยแสดงรายละเอียดเพิ่มเติมในส่วน average size, average time สำหรับ I/O ที่รอ device ทำงาน, % utilization



sar

รูปแบบคำสั่งในการแสดงผล Disk I/O utilization

sar -d interval [count]

ตัวอย่าง เช่น แสดงผล Disk I/O utilization ทุกๆ 3 วินาที จำนวน 2 ครั้ง

# sar -d 3 2


ในกรณีที่ต้องการจะดูข้อมูลย้อนหลัง ไฟล์ที่จัดเก็บจะอยู่ที่ /var/log/sa โดยไฟล์ของวันที่ 1 คือ sa01, ...
ตัวอย่างถ้าเราต้องการจะดู Disk I/O utilization ในวันที่ 23 สามารถดูได้โดยใช้คำสั่งดังนี้

# cd /var/log/sa
# sar -d -f sa23 | more


การทดสอบ disk throughput ด้วยคำสั่ง dd



การวิเคราะห์


  • ตรวจสอบค่า Read/Write ต่อวินาที (r/s, w/s)
  • ตรวจสอบค่า Percentage busy (%util)
  • ตรวจสอบค่า I/O wait (await) ถ้าค่า I/O wait สูง แสดงว่าเกิด I/O bottleneck
  • ตรวจสอบค่า Service time (milliseconds) สำหรับ I/O request ไปยัง device
  • ถ้าค่า average queue length (avgqu-sz) สูง แสดงว่าเกิด disk I/O bottleneck


ถ้า disk แสดงค่า read/write สูง และ percentage utilization (%util) ของ disk เข้าใกล้ 100 percent และ ค่าเฉลี่ย service time (svctm) สูงกว่า 30 milliseconds และมี waiting time (await) เกิดขึ้น จึงมีความจำเป็นที่จะต้องดำเนินการแก้ไขปัญหาดังต่อไปนี้:

  •  ปรับ tune application เพื่อที่จะใช้ disk ให้มีประสิทธิภาพมากขึ้น
  •  ดำเนินการเพิ่ม disk และ config เป็นแบบ Striping เพื่อกระจาย load ไปยัง disk ต่างๆ (LVM เป็นต้น)
  •  เพิ่ม memory เพื่อให้มี buffer ใหญ่ขึ้น
  •  ย้าย file system ไปยัง disk หรือ controller ที่เร็วกว่า หรือเปลี่ยนไปยังอุปกรณ์ disk หรือ controller ที่เร็วกว่า
  • ใช้ hardware RAID controller 

หวังว่าคงจะมีประโยชน์ ไม่มากก็น้อย

วิสูจน์
12/9/2562



คำสั่งที่ใช้ในการตรวจสอบ Performance บน Linux ตอนที่ 3:Disk I/O Utilization คำสั่งที่ใช้ในการตรวจสอบ Performance บน Linux ตอนที่ 3:Disk I/O Utilization Reviewed by Wisoot Amatariyakul on 7:54 PM Rating: 5

คำสั่งที่ใช้ในการตรวจสอบ Performance บน Linux ตอนที่ 2: Memory Utilization

บทความนี้จะอธิบายถึงการตรวจสอบประสิทธิภาพการทำงานของ memory บน Linux สำหรับคำสั่งที่จะนำมาใช้ในการตรวจสอบได้แก่ ps, free, vmstat, sar, top และ slabtop  นอกจากนี้จะพูดถึงไฟล์ /proc/meminfo และ /proc/slabinfo

ก่อนอื่นขอพูดถึงไฟล์ที่เกี่ยวกับการแสดงผลการใช้งาน memory เป็นลำดับแรก

/proc/meminfo

ไฟล์นี้จะแสดงรายละเอียดเกี่ยวกับขนาด memory และ swap ที่ถูกใช้ไปและที่เหลือในระบบ รวมถึง shared memory และ buffer ที่ใช้งานโดย kernel
สามารถดูข้อมูลในไฟล์นี้ได้ ด้วยคำสั่ง cat หรือ more แล้วแต่ผู้ใช้งานสดวก

# cat /proc/meminfo
# more /proc/meminfo


/proc/slabinfo

ไฟล์นี้จะเก็บข้อมูลเกี่ยวกับการใช้งาน memory บน slab cache level ซึ่ง linux kernel version ที่สูงกว่า 2.2 จะใช้ slab pools ในการจัดการ memory
นอกจากการใช้คำสั่ง cat หรือ more ในการดูข้อมูล เราสามารถใช้คำสั่ง /usr/bin/slabtop ในการแสดงข้อมูล kernel slab cache แบบ real-time

# slabtop


  • OBJS — จำนวนรวมทั้งหมดของ objects (memory blocks) รวมทั้งที่ใช้งานอยู่ (allocated) และที่ยังไม่ถูกใช้งาน (spare) 
  • ACTIVE — จำนวนของ objects (memory blocks) ที่ใช้งานอยู่ (allocated) 
  • USE — เปอร์เซ็นต์ของ objects ที่ใช้งานอยู่  ((ACTIVE/OBJS)(100))
  • OBJ SIZE — ขนาดของ objects 
  • SLABS — จำนวนทั้งหมดของ slabs 
  • OBJ/SLAB — จำนวน objects ที่อยู่ใน slab 
  • CACHE SIZE — ขนาด cache ของ slab  
  • NAME — ชื่อของ slab 

คำสั่งที่ใช้ในการตรวจสอบการใช้งาน memory

free

คำสั่งนี้แสดงรายละเอียดเกี่ยวกับขนาด memory และ swap ที่ถูกใช้ไปและที่เหลือในระบบ


  • total           คือ จำนวน memory / swap ทั้งหมด
  • used           คือ ส่วนที่ memory / swap ใช้งานอยู่
  • free            คือ ส่วนที่ memory / swap ที่ยังไม่ถูกใช้งาน
  • share          คือ ส่วนที่นำ memory มาใช้แทน disk
  • buff/cache  คือ ส่วนของ memory ที่ถูกใช้งานโดย buffer และ cache
  • available    คือ  จำนวน memory ที่ว่างอยู่สำหรับใช้ในการ เริ่มใช้งาน application ใหม่ โดยไม่ต้อง swapping


ตัวอย่างการแสดงการใช้งาน memory  โดยค่า default มีหน่วยเป็น kilobytes:

# free


ตัวอย่างการแสดงการใช้งาน memory  โดยค่าที่แสดงได้คำนวนเป็นค่าที่ง่ายต่อการอ่าน เช่น
                B = bytes
                K = kilos
                M = megas
                G = gigas
                T = teras

# free -h



ps

คำสั่ง ps เป็นคำสั่งที่อยู่ใน package procps ใช้สำหรับแสดงการประมวลผลต่างๆ (process) ที่กำลังทำงานอยู่ในระบบ

การแสดงรายการ process โดยอ้างอิง % Memory utilization ด้วยคำสั่ง ps มีหลายรูปแบบที่จะแสดง process ที่ใช้งาน memory สูงสุด 10 process ดังตัวอย่างด้านล่าง

# ps avx | sort -nrk 9,9 | head


# ps avx --sort -rss | head -11


# ps aux | sort -nrk 4,4 | head


# ps aux --sort -%mem | head -11


vmstat

เป็นคำสั่งที่ใช้แสดงรายงานเกี่ยวกับสถิติการทำงานของ virtual memory
ตัวอย่างการแสดงผล Memory utilization ด้วยคำสั่ง vmstat โดยแสดงผลทุกๆ 3 วินาทีเป็นจำนวน 5 ครั้ง

  •      swpd               คือ จำนวน virtual memory ที่ใช้
  •      free                  คือ จำนวน memory ที่ยังไม่ถูกใช้งาน
  •      buff                 คือ จำนวน memory ที่ใช้เป็น buffer
  •      cache               คือ จำนวน memory ที่ใช้เป็น cache
  •      si  - swap in     คือ จำนวน memory ที่โยกกลับมาจาก disk (หน่วยต่อวินาที)
  •      so - swap out   คือ จำนวน memory ที่สลับไปใช้งานยัง disk (หน่วยต่อวินาที)

ค่าที่แสดงมีหน่วยเป็น kilobytes 

# vmstat 3 5



sar

รูปแบบคำสั่งในการแสดงผล Memory utilization

sar -r interval [count]

ตัวอย่าง เช่น แสดงผล Memory utilization ทุกๆ 2 วินาที จำนวน 5 ครั้ง

# sar -r 2 5


ในกรณีที่ต้องการจะดูข้อมูลย้อนหลัง ไฟล์ที่จัดเก็บจะอยู่ที่ /var/log/sa โดยไฟล์ของวันที่ 1 คือ sa01, ...
ตัวอย่างถ้าเราต้องการจะดู Memory utilization ในวันที่ 19 สามารถดูได้โดยใช้คำสั่งดังนี้

# cd /var/log/sa
# sar -r -f sa19 | more


top

แสดงรายละเอียด process เรียงตามการใช้งาน memory โดยการกด M หลังจากการทำงานคำสั่ง top โดยดูในคอลัมน์ %MEM

# top
กด M


นอกจากนี้สามารถดูภาพรวมการใช้งาน memory ดังภาพด้านล่าง



การมี memory จำนวนมากเป็นสิ่งที่ application/buffer ต้องการ โดยที่ kernel จะมองหาพื้นที่จาก cache memory page และหาพื้นที่ที่ใหญ่พอให้พอดีกับความต้องการของ malloc โดยจะทำการ clear ข้อมูลใน memory และจัดสรร cache ให้กับ application ที่ต้องการ
Linux kernel จะใช้ active และ inactive memory ของระบบเพื่อจัดการ memory resource ถ้าเครื่องใช้งาน resource หนักมาก ทำให้ memory มีไม่เพียงพอที่จะใช้ในการ load application หรือใช้ memory swap หนักเกินไป ดูได้จากค่า si (swap in) และ so (swap out) จากคำสั่ง vmstat

การวิเคราะห์

จากคำสั่ง vmstat

  • ถ้า swap out (ค่า so) มีค่ามากกว่า 0 แสดงว่าจำนวน memory มีไม่เพียงพอสำหรับการใช้งาน


จากคำสั่ง free

  • ถ้ามีค่า used ในส่วนของ swap แสดงว่าเคยมีอาการที่ memory ไม่พอใช้ แล้วยืมเนื้อที่จาก disk ใช้งาน ดังนั้นค่านี้ยิ่งน้อยยิ่งดี ถ้าเป็น 0 แสดงว่ายังไม่เคยใช้ memory หมดเลย
  • หากค่า used ในส่วนของ swap มีค่าสูง และ free memory เหลือน้อย แสดงว่า memory ไม่พอใช้ ให้เพิ่ม memory เป็นจำนวนที่มากกว่าค่า used ของ swap 



หวังว่าบทความนี้คงมีส่วนช่วยในการวิเคราะห์ไม่มากก็น้อย

วิสูจน์ อมตาริยกุล

คำสั่งที่ใช้ในการตรวจสอบ Performance บน Linux ตอนที่ 2: Memory Utilization คำสั่งที่ใช้ในการตรวจสอบ Performance บน Linux ตอนที่ 2: Memory Utilization Reviewed by Wisoot Amatariyakul on 8:57 PM Rating: 5

คำสั่งที่ใช้ในการตรวจสอบ Performance บน Linux ตอนที่ 1:CPU Utilization

บทความนี้จะอธิบายถึงคำสั่งที่ใช้ในการตรวจสอบประสิทธิภาพการทำงาน CPU บน Linux ซึ่งมีด้วยกันหลายคำสั่ง  โดยขอเริ่มด้วยคำสั่ง uptime และ w เนื่องจากทั้งสองคำสั่งสามารถใช้ดูในส่วน load average ได้เหมือนกัน

uptime เป็นคำสั่งที่อยู่ใน package procps ใช้สำหรับแสดงว่าเครื่องเปิดใช้งานมาเป็นระยะเวลาเท่าไหร่ มีจำนวนผู้ใช้งานอยู่ในปัจจุบันเท่าไหร่ รวมถีงแสดงปริมาณงานที่ใช้งานอยู่ในระบบทั้งที่ทำงานอยู่ (running state) และที่รอที่จะทำงานอยู่ (waiting threads)

$ uptime
14:21:56 up 101 days, 2:34, 2 users,   load average:  0.00,  0.01,  0.05

w เป็นคำสั่งที่อยู่ใน package procps ที่ใช้แสดงว่ามีใครเข้ามาใช้งานบ้างและกำลังทำงานอะไรอยู่ รวมถีงแสดงปริมาณงานที่ใช้งานอยู่ในระบบทั้งที่ทำงานอยู่ (running state) และที่รอที่จะทำงานอยู่ (waiting threads)

$ w
14:38:44 up 101 days, 2:51, 2 users,  load average:  0.00,  0.01,  0.05
USER    TTY          FROM                     LOGIN@    IDLE      JCPU     PCPU     WHAT
root        tty1                                            22Apr19     101days  0.06s      0.06s       -bash
root        pts/1         203.10.21.70            12:34           4.00s      0.10s      0.01s       w           

ทั้งคำสั่ง uptime และ w แสดงรายละเอียดเกี่ยวกับ load average เหมือนกันเนื่องจากไปดึงข้อมูลมาจากไฟล์ /proc/loadavg 

$ cat /proc/loadavg
0.00 0.01 0.05 3/251 36491

load average เป็นการวัดความต้องการใช้งานทรัพยากร สำหรับ Linux จะหมายถึง CPU และ disk I/O process (ถ้าเป็น OS อื่นหมายถึง CPU เท่านั้น) โดยแสดงค่าเฉลี่ย 3 ช่วงคือ 1 นาที, 5 นาที, และ 15 นาที

ซึ่งสามารถตีความได้ดังนี้

  • ถ้าค่า average เป็น 0.0 หมายถึง เครื่องว่างจากการใช้งาน (idle)
  • ถ้าค่า average ที่ 1 นาทีสูงกว่าค่า average ที่ 5 หรือ 15 นาที แสดงว่า มี load เพิ่มขึ้น
  • ถ้าค่า average ที่ 1 นาทีต่ำกว่าค่า average ที่ 5 หรือ 15 นาที แสดงว่า มี load ลดลง
  • ถ้า load มากกว่า จำนวน CPU หมายถึง CPU ถูกใช้งานเต็มประสิทธิภาพจนถึงจุดอิ่มตัว ซึ่งอาจจะกระทบกับประสิทธิภาพการทำงาน ทำให้รู้สึกว่าเครื่องทำงานช้าลง
ถ้าต้องการทราบจำนวน CPU สามารถดูได้ด้วยคำสั่ง nproc

$ nproc
2

นอกจากคำสั่ง uptime และ w แล้ว ยังสามารถดูได้จากบรรทัดบนสุดจากคำสั่ง top ดังตัวอย่างด้านล่าง



ps

ถ้าต้องการดูว่ามี process ไหนที่ใช้งาน CPU มาก สามารถดูได้จากคำสั่ง ps ดังตัวอย่างด้านล่าง

# ps aux | sort -nrk 3,3 | head


ถ้าหากต้องการให้แสดงเป็น real-time สามารถทำได้โดยเพิ่มคำสั่ง watch ไว้ข้างหน้า ดังตัวอย่าง

# watch "ps aux | sort -nrk 3,3 | head"



นอกจากนี้ยังสามารถดูได้จากคำสั่ง top ซึ่งแสดงรายละเอียดดังตัวอย่างด้านล่าง


นอกจากนี้เรายังสามารถดู CPU Utilization จากคำสั่ง top


นอกจากคำสั่ง top แล้ว เรายังสามารถดู CPU Utilization จากคำสั่ง vmstat และ sar

vmstat

รูปแบบคำสั่ง

vmstat  interval  [count]

ตัวอย่างเช่น ต้องการแสดงผลของ CPU utilization ทุกๆ 3 วินาที จำนวน 5 ครั้ง


  • us    - user time คือ เวลาที่ใช้ในการทำงานที่ไม่เกี่ยวกับ kernel code เช่น การทำงานในส่วน application เป็นต้น โดยที่ user time จะรวมถึง nice time (เวลาที่ใช้ผ่านคำสั่ง nice) ด้วย
  • sy    - system timeคือ เวลาที่ใช้ในการทำงานที่เกี่ยวกับ kernel code จะเกี่ยวข้องกับการทำงานบน cpu, การติดต่อสื่อสารกับอุปกรณ์อื่นๆ ผ่าน device driver โดยเฉพาะอย่างยิ่ง disk I/O
  • id    - idle คือ เวลาที่ยังไม่ถูกใช้งาน
  • wa  - IO-wait คือ เวลาที่ใช้ในการรอที่จะใช้งาน disk I/O
  • st    - stolen คือ เวลาที่หายไปจาก virtual machine (Linux 2.6.11 หรือใหม่กว่า)


# vmstat 3 5


บรรทัดแรกที่แสดงจะหมายถึงผลสรุปตั้งแต่เปิดเครื่องจนถึงปัจจุบัน จะไม่นำเอามาใช้ในการตรวจสอบ

ถ้าจำนวนโปรเซสใน run queue (procs r) มีค่ามากกว่าจำนวน CPU ของระบบ จะทำให้ระบบทำงานช้าลง เนื่องจากมีจำนวนมากกว่า CPU สำหรับใช้งาน 
ถ้าค่านี้มีมากกว่า 4 เท่า ของจำนวน CPU ระบบจะพบกับปัญหา CPU shortage คือ มี CPU ไม่เพียงพอต่อการใช้งานของโปรเซสบนระบบ และเครื่องจะเกิดอาการช้ามาก

การแก้ปัญหาทำได้คือ
- Tuning application procedure ที่มีผลต่อการใช้งาน CPU
- เพิ่ม CPU ให้กับระบบ

sar

รูปแบบคำสั่ง

sar  interval  [count]

ตัวอย่างเช่น ต้องการแสดงผลของ CPU utilization ทุกๆ 2 วินาที จำนวน 5 ครั้ง

# sar 2 5

หรือ

# sar -u 2 5


ในกรณีที่ต้องการจะดูข้อมูลย้อนหลัง ไฟล์ที่จัดเก็บจะอยู่ที่ /var/log/sa โดยไฟล์ของวันที่ 1 คือ sa01, ไฟล์วันที่ 2 คือ sa02, ...
ตัวอย่างเช่นต้องการดู CPU utilization ในวันที่ 15 สามารถดูได้โดยใช้คำสั่งดังนี้

# cd  /var/log/sa
# sar -u -f sa15 | more

mpstat

ในกรณีที่เครื่องมีหลาย CPU เราสามารถดูรายละเอียดการใช้งานของแต่ละ CPU ได้โดยใช้คำสั่ง mpstat ซึ่งก่อนใช้งานคำสั่งนี้จะต้องติดตั้ง package "sysstat" ก่อน

การติดตั้ง package "sysstat" บน Ubuntu หรือ Debian ใช้คำสั่ง

# apt-get install sysstat

การติดตั้ง package "sysstat" บน RHEL/CentOS Linux v4.x หรือเก่ากว่า ใช้คำสั่ง

# up2date install sysstat

การติดตั้ง package "sysstat" บน RHEL/CentOS/Oracle Linux v5.x หรือใหม่กว่า ใช้คำสั่ง

# yum install sysstat

ตัวอย่างคำสั่ง mpstat

แสดงภาพรวมการใช้งาน CPU

# mpstat



แสดงภาพรวมการใช้งาน CPU ทุกๆ 3 วินาที จำนวน 3 ครั้ง

# mpstat 3 3



แสดงการใช้งานกระจายรายละเอียดแต่ละ CPU

# mpstat -P ALL


ในตัวอย่างมีเพียง 1 CPU จึงแสดงแค่ CPU#0  ถ้ามี 4 CPU ก็จะแสดง CPU#0, CPU#1, CPU#2 และ CPU#3 ตามลำดับ

คำสั่ง mpstat ใช้ในการช่วยดูว่าการทำงานของ CPU มีการกระจาย load ได้สมดุลหรือไม่ มี CPU ตัวไหนทำงานหนักหรือไม่

วิธีวิเคราะห์ค่าทั้งจากคำสั่ง top, vmstat, mpstat และ sar
  • CPU Utilization มีค่ามากกว่า 80% หรือไม่ โดยดูจากค่า %idle ถ้าน้อยกว่า 20 แสดงว่าการทำงานของ CPU มี load มาก จะส่งผลกระทบกับประสิทธิภาพการทำงานในอนาคต
  • CPU system time มีค่ามากกว่า 20% หรือไม่ โดยดูจากค่า sy (vmstat และ top), %sys (mpstat) %system (sar)
  • processor load ไม่สมดุล ดูได้จากคำสั่ง "mpstat -P ALL"
  • ในกรณีที่ CPU Utilization 100% มีค่า I/O wait หรือไม่  โดยดูจากค่า wa (สำหรับ vmstat และ top), %iowait (สำหรับ sar และ mpstat) และ มี process ไหนใช้งาน CPU สูง โดยดูจากคำสั่ง ps หรือ top
                ถ้าค่า CPU system time สูง แสดงว่าปัญหาจะเกี่ยวข้องกับตัว CPU ไม่เพียงพอ หรือ  เกี่ยวข้องกับ disk I/O ซึ่งต้องไปดูจากการใช้งาน I/O (I/O Utilization) ซึ่งจะกล่าวในบทความต่อๆไป
                ถ้าค่า CPU user time สูง โดยทั่วไปถือว่าระบบทำงานปกติ แต่ถ้าเกิดปัญหาระบบทำงานช้าต้องดูองค์ประกอบอื่น เช่น ปัญหาอาจจะเกี่ยวข้องกับการใช้งานของ user หรือ application program มีการเปลี่ยนแปลงอะไรหรือไม่  ซึ่งต้องไปดู process จากคำสั่ง ps หรือ top ว่า process ไหนใช้ CPU สูง
               ถ้าค่า CPU Idle time (cpu id) เป็น 0 และค่า CPU system time (cpu sy) เป็น double  ของค่า CPU user time (cpu us) ระบบจะเจอปัญหา CPU shortage เครื่อจะทำงานช้าลงมาก

หลังจากทราบแล้วว่า process ไหนใช้งาน CPU สูง ต้องไปดูว่ามีการเปลี่ยนแปลงอะไรก่อนที่ปัญหาจะเกิด มี workload เพิ่มขึ้นหรือไม่ มีการปรับเปลี่ยน config หรือไม่

การแก้ปัญหาทำได้คือ
- Tuning application procedure ที่กระทบต่อการใช้งาน CPU
- เพิ่ม CPU ให้กับระบบ

บทความนี้น่าจะมีประโยชน์สำหรับผู้ที่สนใจในการตรวจสอบประสิทธิภาพการทำงานบน Linux ไม่มากก็น้อย

วิสูจน์ อมตาริยกุล

คำสั่งที่ใช้ในการตรวจสอบ Performance บน Linux ตอนที่ 1:CPU Utilization คำสั่งที่ใช้ในการตรวจสอบ Performance บน Linux ตอนที่ 1:CPU Utilization Reviewed by Wisoot Amatariyakul on 11:28 PM Rating: 5
ads 728x90 B
Powered by Blogger.