การทำ **Performance Tuning** บนระบบปฏิบัติการ Linux ในฐานะผู้ดูแลระบบระดับโปรดักชัน จำเป็นต้องเข้าใจแนวทางการหา "คอขวด" (Bottleneck Detection) อย่างถูกต้องตามลำดับขั้นตอนเพื่อไม่ให้หลงทิศทาง สไลด์ชุดนี้ของ UnixDev รวบรวมเครื่องมือวิเคราะห์ระบบประสิทธิภาพสูงที่อิงตามทฤษฎีระบบของ Brendan Gregg (วิศวกรวิเคราะห์ระบบชั้นนำระดับโลก)
เราแบ่งกลุ่มการใช้เครื่องมือต่างๆ ออกเป็น 4 แกนหลัก เพื่อให้ง่ายต่อการหยิบมาใช้วิเคราะห์อาการของเซิร์ฟเวอร์แบบเรียลไทม์:
แกนที่ 1: CPU & System Load Tools
- `uptime` & `top` / `htop`: ตรวจสอบระดับการประมวลผล (Load Average) และพฤติกรรมการใช้ซีพียูของแต่ละโปรเซสแบบทันทีทันใด - `vmstat 1`: ดูสถิติสรุปการทำงานของระบบประมวลผล หน่วยความจำเสมือน และการสลับบริบทการประมวลผล (Context Switches)
แกนที่ 2: Memory Optimization Tools
- `free -m`: ตรวจสอบพื้นที่หน่วยความจำที่เหลืออยู่จริง รวมถึงการทำงานของ Linux Buffer/Cache และ Swap memory - `sar -r 1`: บันทึกและแสดงผลสถิติการใช้งานแรมย้อนหลัง ช่วยหาพฤติกรรมการเกิดหน่วยความจำหมด (Out Of Memory - OOM)
แกนที่ 3: Disk I/O Bottleneck Detection
- `iostat -xz 1`: วิเคราะห์เชิงลึกว่าอุปกรณ์จัดเก็บข้อมูล (SSD/NVMe) ตัวใดทำงานโหลดหนัก พร้อมดูเปอร์เซ็นต์ความหน่วงและประสิทธิภาพความพยายามในการเขียนอ่าน - `iotop`: แสดงให้เห็นชัดเจนว่าโปรเซสใดเป็นผู้แย่งเขียนอ่านข้อมูลบนดิสก์สูงที่สุด
แกนที่ 4: Network Session & Packet Audit
- `ss -s` & `netstat -antp`: ตรวจสอบการกระจายตัวของ TCP/UDP sessions และสถานะของพอร์ตเครือข่าย เพื่อหา Session ค้างสะสม - `tcpdump`: จับแพ็กเก็ตข้อมูลดิบในระดับเครือข่ายเพื่อตรวจสอบข้อผิดพลาดด้านการขนส่งข้อมูล
เครื่องมือขั้นลึกสำหรับการสืบสวนหาคดีปริศนา (Deep Profiling):
ในระดับสูง ทีม UnixDev จะนำระบบสืบค้นประสิทธิภาพระดับลึกเช่น `perf` มาวิเคราะห์สถิติจังหวะเวลาของ CPU (CPU Cycles) เพื่อสร้าง **CPU Flame Graphs** ซึ่งจะบ่งบอกอย่างแน่ชัดว่าโค้ดบรรทัดใด ฟังก์ชันใดในไลบรารีระบบปฏิบัติการที่กำลังหน่วงรั้งความเร็วของซอฟต์แวร์ รวมถึงการประยุกต์ใช้ **eBPF (Extended Berkeley Packet Filter)** เพื่อเขียนโปรแกรมติดตามการทำงานภายในเคอร์เนลโดยไม่ส่งผลกระทบต่อประสิทธิภาพการทำงานหลัก
การใช้เครื่องมือที่ถูกต้องจะช่วยลดระยะเวลาการกู้คืนระบบจากเหตุขัดข้องได้อย่างมหาศาล และเปลี่ยนการจูนระบบจากการเดาสุ่ม (Trial and Error) ให้เป็นการจูนด้วยหลักฐานวิศวกรรมที่จับต้องได้