Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

ติดตั้ง Atop: การตรวจสอบประสิทธิภาพระบบแบบเรียลไทม์ที่ง่ายดาย

atop เป็นเครื่องมือตรวจสอบประสิทธิภาพแบบเต็มหน้าจอ (full-screen) ที่ให้รายงานโดยละเอียดเกี่ยวกับกระบวนการทั้งหมดของระบบ รวมถึงกระบวนการที่สิ้นสุดลงแล้ว โดยการบันทึกกิจกรรมระบบอย่างต่อเนื่องในช่วงเวลาที่กำหนด และเก็บข้อมูลไว้เพื่อใช้วิเคราะห์ภายหลัง

บันทึก (logs) เหล่านี้สามารถใช้เพื่อวัตถุประสงค์ต่างๆ เช่น การวิเคราะห์ระบบ, ปรับแต่งประสิทธิภาพ, ระบุจุดคอขวด (bottlenecks), แก้ไขปัญหา (debugging), หรือติดตามสาเหตุของการโหลดระบบที่ไม่คาดคิด

แตกต่างจากเครื่องมือแบบดั้งเดิมอย่าง top หรือ htop ที่แสดงข้อมูลระบบแบบเรียลไทม์เท่านั้น atop ให้คุณดูย้อนกลับไปในอดีตและตรวจสอบว่ามีอะไรเกิดขึ้นในช่วงเวลาที่บันทึกไว้ ซึ่งมีคุณค่าอย่างยิ่งสำหรับผู้ดูแลระบบในการรักษาเซิร์ฟเวอร์ให้ทำงานลื่นไหล

ในบทความนี้ เราจะครอบคลุมถึงสิ่งที่ atop เสนอ วิธีติดตั้งบนการกระจาย Linux ยอดนิยม และวิธีใช้งานอย่างมีประสิทธิภาพเพื่อติดตามและวิเคราะห์ประวัติประสิทธิภาพของระบบ

Atop คืออะไร?

atop เป็นเครื่องดูแลระบบและกระบวนการแบบเต็มหน้าจอสำหรับ Linux ออกแบบมาเพื่อรายงานกิจกรรมระดับระบบและระดับกระบวนการ รวมถึง:

  • ดูกระบวนการที่กำลังรันและที่เสร็จสิ้นทั้งหมด
  • ตรวจสอบการใช้ CPU, หน่วยความจำ, ดิสก์, และเครือข่ายต่อกระบวนการ
  • บันทึกกิจกรรมทั้งหมดในไฟล์ไบนารีเพื่อวิเคราะห์ภายหลัง
  • ตรวจจับกระบวนการ zombie และ orphan
  • แสดงการใช้ทรัพยากรระดับเธรด (thread-level)
  • ตรวจสอบกิจกรรมต่อผู้ใช้และต่อโปรแกรม
  • แสดง pressure stalls (PSI) สำหรับ CPU/หน่วยความจำ/ดิสก์ ในเคอร์เนลรุ่นใหม่
  • รองรับ cgroup v2 เหมาะสำหรับสภาพแวดล้อมคอนเทนเนอร์
  • รองรับ Netatop สำหรับสถิติเครือข่ายต่อกระบวนการ (optional)

สิ่งที่ทำให้ atop โดดเด่น: สามารถบันทึกกิจกรรมทั้งหมดลงดิสก์ในช่วงเวลาปกติ (ค่าเริ่มต้นทุก 10 นาที) คุณสามารถเล่นซ้ำ (replay) ส่วนใดก็ได้ของประวัติระบบและขุดลึกลงไปดูว่ามีอะไรเกิดขึ้น

นี่เป็นข้อได้เปรียบมหาศาลเมื่อต้อง debug การ crash แบบสุ่ม, ติดตามการใช้ทรัพยากรผิดปกติ, หรือตรวจสอบการใช้งานตามเวลา โดยเฉพาะสำหรับเซิร์ฟเวอร์ headless หรือระบบ production

การติดตั้งเครื่องมือตรวจสอบ Atop บน Linux

atop พร้อมใช้ใน repository ของการกระจาย Linux ส่วนใหญ่ คุณสามารถติดตั้งผ่าน package manager ของระบบ หรือคอมไพล์จากซอร์สเพื่อรุ่นล่าสุด

บน RHEL/CentOS/Fedora

ก่อนอื่น ต้องเปิดใช้งาน repository EPEL บนการกระจายแบบ RHEL-based เพื่อติดตั้ง atop

sudo dnf install epel-release

หลังจากเปิด EPEL แล้ว ใช้ dnf ติดตั้งแพ็กเกจ atop:

sudo dnf install atop

บน Debian/Ubuntu

บนการกระจายแบบ Debian-based ติดตั้ง atop จาก repository เริ่มต้นด้วย apt:

sudo apt-get install atop

บน Arch Linux / Manjaro

หากใช้ rolling-release distro อย่าง Arch หรืออนุพันธ์ ติดตั้ง atop เพียงคำสั่งเดียว:

sudo pacman -S atop

ติดตั้ง atop จากซอร์ส (ทางเลือก)

หากต้องการรุ่นล่าสุด (เช่น repo เก่าเกินไป หรือต้องการฟีเจอร์ล่าสุด) สามารถสร้าง atop จากซอร์สได้:

wget https://www.atoptool.nl/download/atop-2.12.0.tar.gz
tar -xzf atop-2.12.0.tar.gz
cd atop-2.12.0
make
sudo make install

หมายเหตุ: อาจต้องติดตั้งเครื่องมือพัฒนา เช่น build-essential (Debian) หรือ gcc, make ฯลฯ ขึ้นอยู่กับ distro

หลังติดตั้ง atop แล้ว ต้องเปิดใช้งานบริการบันทึกพื้นหลัง (background logging service) เพื่อให้เริ่มเก็บข้อมูลประสิทธิภาพอัตโนมัติเมื่อบูท:

sudo systemctl enable --now atop
sudo systemctl enable --now atop-rotate.timer

เริ่มต้นใช้งาน atop บน Linux

หลังติดตั้งและเปิดบริการ logging แล้ว เริ่ม atop ในเทอร์มินัล:

atop

คุณจะเห็นอินเทอร์เฟซแบบไดนามิก มีสี คล้าย top รีเฟรชทุก 10 วินาทีโดยค่าเริ่มต้น

ติดตั้ง Atop: การตรวจสอบประสิทธิภาพระบบแบบเรียลไทม์ที่ง่ายดาย

ปรับแต่งช่วงเวลาบันทึก (ค่าเริ่มต้น: 600 วินาที)

ค่าเริ่มต้น atop บันทึกกิจกรรมระบบทุก 600 วินาที (10 นาที) ซึ่งอาจเพียงพอสำหรับการตรวจสอบทั่วไป แต่บ่อยครั้งน้อยเกินไปสำหรับการ troubleshooting โดยเฉพาะเมื่อตามหา spike การใช้ทรัพยากรที่สั้นหรือ debug bottleneck

sudo sed -i 's/600/60/' /etc/atop/atop.daily [Under RedHat based systems]
sudo sed -i 's/600/60/' /etc/default/atop [Under Debian based systems]

หลังเปลี่ยนแล้ว atop จะเก็บ log ทุกนาที ให้ภาพชัดเจนของพฤติกรรมระบบตามเวลา มีประโยชน์มากสำหรับการวินิจฉัยปัญหาที่เป็นรอย, วิเคราะห์แนวโน้ม, หรือตรวจสอบเซิร์ฟเวอร์ภายใต้โหลดหนัก

ดูข้อมูลการจัดตารางเวลา (กดปุ่ม s)

กดปุ่ม s เพื่อดูว่า kernel จัดตารางกระบวนการอย่างไร แสดงเวลา CPU ที่แต่ละกระบวนการใช้ และระยะเวลาที่อยู่ในสถานะ "running"

atop -s

วิเคราะห์การใช้หน่วยความจำ (กดปุ่ม m)

กด m เพื่อดูการใช้หน่วยความจำของกระบวนการทั้งหมด คอลัมน์ VSIZE แสดงหน่วยความจำเสมือนทั้งหมดที่จัดสรร RSIZE แสดงส่วนที่อยู่ใน RAM จริง นอกจากนี้ VGROW และ RGROW แสดงการเพิ่ม/ลดของหน่วยความจำเสมือนและจริงในช่วงปัจจุบัน คอลัมน์ MEM แสดงเปอร์เซ็นต์หน่วยความจำที่แต่ละกระบวนการใช้

atop -m

ตรวจสอบการใช้งานดิสก์ (กดปุ่ม d)

Disk I/O เป็น bottleneck ในหลายระบบ atop ทำให้ตรวจสอบง่ายด้วยปุ่ม d แสดงกิจกรรมดิสก์ระดับระบบ รวมถึงสถิติ LVM และประสิทธิภาพต่อดิสก์ คอลัมน์ RDDSK และ WRDSK แสดงข้อมูลอ่าน/เขียน (KB/s) คอลัมน์ DSK และ LVM ช่วยระบุโวล्यูมหรือดิสก์ที่ทำงานหนักที่สุด

atop -d

ดูข้อมูลกระบวนการโดยละเอียด (กดปุ่ม v)

ปุ่ม v เปิดการแบ่งส่วนรายละเอียดของแต่ละกระบวนการ แสดงค่า UID, PID, GID, และเปอร์เซ็นต์ CPU ใช้งานเฉพาะเจาะจงเมื่อต้องติดตามผู้ใช้หรือบริการด้วยตัวเลข ID หรือตรวจสอบว่ากรุ๊ปไหนเป็นเจ้าของกระบวนการที่ใช้ทรัพยากรมาก

atop -v

แสดงคำสั่งกระบวนการ (กดปุ่ม c)

เมื่อต้องการดูคำสั่งเต็มที่รันสำหรับแต่ละกระบวนการ กด c จะแทนที่ชื่อกระบวนการด้วยคำสั่งเต็ม ช่วยระบุว่าเป็นสคริปต์, ไบนารี, หรือ flag ไหน ที่ช่วยแยก instance หลายตัวของแอปเดียวกัน หรือ debug งานที่ผู้ใช้ส่ง

atop -c

จัดกลุ่มกระบวนการตามโปรแกรม (กดปุ่ม p)

กด p เพื่อได้สรุประดับโปรแกรม รวมข้อมูลต่อ executable program แสดงจำนวนครั้งที่ถูก spawn และการใช้ทรัพยากรสะสม คอลัมน์ซ้ายสุดแสดงจำนวน spawn ขวาสุดแสดงชื่อโปรแกรมจริง

atop -p

จัดกลุ่มกระบวนการตามผู้ใช้ (กดปุ่ม u)

กด u เพื่อดูการใช้ทรัพยากรระดับผู้ใช้ แสดงจำนวนกระบวนการที่แต่ละผู้ใช้รันอยู่หรือรันในช่วง monitoring รวมถึง CPU และหน่วยความจำสะสม

atop -u

ตรวจสอบการใช้งานเครือข่าย (กดปุ่ม n)

เพื่อเปิดสถิติเครือข่ายต่อกระบวนการ ต้องติดตั้งและเปิดใช้งาน kernel module Netatop ซึ่งเพิ่มความสามารถของ atop ในการแสดง traffic ส่ง/รับต่อกระบวนการ

# RedHat-based: sudo yum install kernel-devel zlib-devel
# Debian-based: sudo apt-get install zlib1g-dev

ดาวน์โหลดและสร้าง:

wget https://www.atoptool.nl/download/netatop-0.3.tar.gz
tar -xvf netatop-0.3.tar.gz
cd netatop-0.3
make
sudo make install

โหลดโมดูลและเริ่ม daemon อัตโนมัติหลังบูท:

sudo systemctl start netatop
sudo systemctl enable netatop

หลังติดตั้งแล้ว กด n ภายใน atop จะแสดง bytes ส่ง/รับ, packet counts, และ network errors ต่อกระบวนการ

atop -n

เข้าถึงบันทึกประวัติ (Historical Logs)

Atop เก็บไฟล์ log แบบไบนารีที่:

/var/log/atop/atop_YYYYMMDD

เช่น ไฟล์ atop_20250630 มี log วันที่ 30 มิถุนายน 2025 เป็นไฟล์ไบนารี ไม่ใช่ human-readable – เฉพาะ atop เท่านั้นที่ parse ได้

เพื่อดูช่วงเวลาเฉพาะจาก log วันนี้ เช่น เริ่ม 05:05 น.:

atop -r -b 05:05 -l 1

โดยที่:

  • -r บอก Atop ให้อ่านจากไฟล์ log
  • -b ระบุเวลาเริ่มต้น
  • -l 1 จำกัดเอาต์พุตเพียงหนึ่ง snapshot interval

ใช้ spacebar เพื่อเลื่อนไป interval ถัดไป T เพื่อย้อนกลับ Z เพื่อกระโดดไป entry ล่าสุด

ดูคำสั่งช่วยเหลือภายใน Atop

ขณะอยู่ในอินเทอร์เฟซ atop กด ? เพื่อดูรายการคำสั่งและ shortcut ทั้งหมด มีประโยชน์เมื่อต้องการค้นหาตัวเลือกที่ซ่อนอยู่หรือปรับแต่งการแสดงผล

สรุป

หวังว่าบทความนี้จะมีประโยชน์และช่วยให้คุณระบุหรือป้องกันปัญหากับระบบ Linux ได้ หากมีคำถามหรือต้องการคำอธิบายเพิ่มเติมเกี่ยวกับการใช้งาน atop กรุณาแสดงความคิดเห็นด้านล่าง