VPS Benchmark ด้วยตัวเอง: 4 คำสั่งเช็กว่า VM ได้ CPU และ Disk I/O ครบตามสเปกหรือไม่

VPS Benchmark ด้วยตัวเองด้วย vmstat, sysbench และ fio วัด CPU Steal Time, ความเร็ว CPU และ Disk I/O ของ VM พร้อมวิธีอ่านผลและตั้งค่าทดสอบให้ได้ผลที่เชื่อถือได้

โดย ทีมงาน THAI DATA CLOUD อัปเดต อ่าน 11 นาที เข้าชม 1 ครั้ง

แชร์FacebookXLINELinkedIn
VPS Benchmark วัด CPU และ Disk I/O ของ VM

VPS Benchmark ที่ทำเองได้และเชื่อถือได้ใช้ 4 คำสั่งหลัก คือ vmstat วัด CPU Steal Time, sysbench cpu วัดความเร็ว CPU, fio แบบ Random 4K วัด IOPS และ fio แบบ Sequential วัด Throughput ของดิสก์ ผลที่ได้บอกว่า VM ได้ทรัพยากรตามที่จ่ายเงินหรือไม่ และช่วยเปรียบเทียบผู้ให้บริการหรือแพ็กเกจต่างๆ ด้วยเกณฑ์เดียวกัน

บทความนี้ใช้ได้กับ VPS, Cloud Server และ VM บน Private Cloud ทุกแบบที่รัน Linux ตัวอย่างคำสั่งทดสอบบน Ubuntu และ Debian

ทำไมต้องทำ VPS Benchmark เอง

สเปกในหน้าแพ็กเกจบอกแค่จำนวน vCPU, RAM และขนาดดิสก์ แต่ไม่ได้บอกว่า vCPU นั้นแชร์กับ VM อื่นมากแค่ไหน หรือดิสก์ทำ IOPS ได้เท่าไรในสภาพใช้งานจริง อาการที่มักเจอคือระบบช้าลงบางช่วงเวลาโดยที่โหลดของเราไม่ได้เพิ่ม ซึ่งอาจเกิดจาก Noisy Neighbor คือ VM อื่นบน Host เดียวกันใช้ทรัพยากรหนัก

การทำ VPS Benchmark ด้วยวิธีที่เป็นมาตรฐาน ทำให้ได้ตัวเลขที่ใช้คุยกับผู้ให้บริการได้ และใช้เป็น Baseline เทียบก่อนและหลังเปลี่ยนแพ็กเกจ

เตรียมเครื่องก่อนทำ VPS Benchmark

sudo apt update
sudo apt install -y sysstat sysbench fio
  • ปิดหรือหยุดแอปที่รันอยู่ เพื่อไม่ให้โหลดของเราเองปนกับผลทดสอบ
  • ทดสอบซ้ำอย่างน้อย 3 รอบในช่วงเวลาต่างกัน เช่น เช้า บ่าย และช่วงค่ำ เพราะโหลดของ Host เปลี่ยนตามเวลา
  • บันทึกเวอร์ชัน Kernel, ประเภทดิสก์ และขนาด VM ไว้ทุกครั้ง เพื่อให้เทียบผล VPS Benchmark ข้ามรอบได้

คำสั่งที่ 1: vmstat วัด CPU Steal Time

vmstat 1 60

คำสั่งนี้แสดงค่าทุก 1 วินาที 60 ครั้ง ให้ดูคอลัมน์ st (Steal) ซึ่งคือสัดส่วนเวลาที่ vCPU พร้อมทำงานแต่ต้องรอ Hypervisor เพราะ CPU จริงถูกใช้โดย VM อื่น

  • ค่า st ใกล้ 0: ได้ CPU เต็มตามสเปก
  • ค่า st ขึ้นลงเป็นช่วงสั้นๆ: เป็นเรื่องปกติของ Shared Infrastructure
  • ค่า st สูงต่อเนื่อง: มีการแย่ง CPU ระดับ Host เกณฑ์ที่ใช้กันทั่วไปคือถ้าสูงเกินประมาณ 5–10% ต่อเนื่องควรแจ้งผู้ให้บริการ [ตรวจสอบ: ใช้เป็นแนวทางทั่วไป ไม่ใช่มาตรฐานทางการ]

ถ้าต้องการดูแยกทีละ vCPU ใช้ mpstat -P ALL 1 30 จากแพ็กเกจ sysstat แล้วดูคอลัมน์ %steal

คำสั่งที่ 2: sysbench วัดความเร็ว CPU

sysbench cpu --threads=$(nproc) --time=60 run

ดูค่า events per second ยิ่งสูงยิ่งดี ให้ทดสอบ 2 แบบ คือ --threads=1 เพื่อวัด Single-thread และ --threads=$(nproc) เพื่อวัดทุก vCPU พร้อมกัน ถ้าผลแบบหลายเธรดไม่เพิ่มตามจำนวน vCPU อาจแปลว่า vCPU บางตัวไม่ได้ทำงานเต็มที่ ให้รัน vmstat คู่กันในอีกหน้าต่างเพื่อดูค่า Steal ระหว่างทดสอบ

คำสั่งที่ 3: fio วัด IOPS แบบ Random 4K

fio --name=randrw --filename=/root/fio.test --size=4G --rw=randrw --rwmixread=70 --bs=4k --ioengine=libaio --iodepth=32 --numjobs=4 --direct=1 --runtime=60 --time_based --group_reporting

รูปแบบนี้จำลองโหลดของ Database คืออ่าน 70% เขียน 30% ขนาดบล็อก 4K ให้ดูค่า IOPS และ clat (Completion Latency) โดยเฉพาะค่า Percentile 99 ซึ่งบอกว่าคำขอที่ช้าที่สุดใช้เวลาเท่าไร ระบบที่ IOPS สูงแต่ Latency ที่ 99th Percentile กระโดดเป็นช่วงๆ มักทำให้แอปช้าเป็นพักๆ

ค่า --direct=1 สำคัญมาก เพราะข้าม Page Cache ของ Linux ถ้าไม่ใส่ ผลจะสูงเกินจริงเพราะวัดความเร็ว RAM แทนดิสก์ ดูตัวเลือกทั้งหมดได้ใน เอกสาร fio

คำสั่งที่ 4: fio วัด Throughput แบบ Sequential

fio --name=seqread --filename=/root/fio.test --size=4G --rw=read --bs=1M --ioengine=libaio --iodepth=16 --direct=1 --runtime=60 --time_based

ดูค่า BW (Bandwidth) เป็น MB/s ใช้ประเมินงาน Backup, การย้ายไฟล์ขนาดใหญ่ และ Log Processing เปลี่ยน --rw=read เป็น --rw=write เพื่อวัดการเขียน หลังทดสอบเสร็จให้ลบไฟล์ด้วย rm /root/fio.test

อ่านผล VPS Benchmark ให้ถูก

สิ่งที่วัด ค่าที่ควรดู สัญญาณที่ต้องสงสัย
CPU Steal st จาก vmstat สูงต่อเนื่องในทุกรอบทดสอบ
CPU Performance events per second ผลต่างกันมากระหว่างรอบที่ทดสอบต่างเวลา
Random I/O IOPS และ clat p99 Latency p99 สูงกว่าค่าเฉลี่ยหลายเท่า
Sequential I/O BW (MB/s) ต่ำกว่าที่ผู้ให้บริการระบุอย่างชัดเจน

ในการทำ VPS Benchmark ความสม่ำเสมอของผลสำคัญกว่าตัวเลขสูงสุด VM ที่ได้ผลปานกลางแต่คงที่ทุกรอบ มักให้ประสบการณ์ใช้งานดีกว่า VM ที่บางรอบเร็วมากแต่บางรอบช้ามาก

ข้อควรระวังในการทำ VPS Benchmark

  • อย่ารันบนระบบ Production ช่วงมีผู้ใช้: fio สร้างโหลดดิสก์หนัก อาจทำให้แอปช้าลง
  • ตรวจเงื่อนไขการใช้งาน: ผู้ให้บริการบางรายจำกัดการทดสอบโหลดต่อเนื่องนาน ควรอ่านข้อตกลงก่อน
  • เทียบด้วยพารามิเตอร์เดียวกันเสมอ: ถ้าเปลี่ยน iodepth หรือ numjobs ผลจะเทียบกันไม่ได้
  • ดิสก์ที่มี Burst Credit: บางแพ็กเกจให้ IOPS สูงช่วงแรกแล้วลดลง ให้ทดสอบนานพอ เช่น 10 นาทีขึ้นไป เพื่อเห็นค่าหลังหมด Burst

เมื่อไรควรย้ายจาก VPS ไป Private Cloud

ถ้าผล VPS Benchmark แสดงค่า Steal สูงหรือ Latency ไม่สม่ำเสมอต่อเนื่อง และระบบของคุณเป็น Production ที่ Downtime มีต้นทุนสูง นั่นเป็นสัญญาณว่าควรพิจารณาทรัพยากรแบบ Dedicated อ่านเกณฑ์การเลือกเพิ่มเติมได้ที่หน้า Cloud Server และ Private Hosting VPS

คำถามที่พบบ่อย

CPU Steal Time ในผล VPS Benchmark คืออะไร?

CPU Steal Time คือสัดส่วนเวลาที่ vCPU ของ VM พร้อมทำงานแต่ต้องรอ เพราะ Hypervisor จัดสรร CPU จริงให้ VM อื่นอยู่ ค่านี้วัดได้จากคอลัมน์ st ในคำสั่ง vmstat หรือ top

VPS Benchmark ควรทดสอบนานแค่ไหน?

แต่ละคำสั่งควรรันอย่างน้อย 60 วินาที และทดสอบซ้ำ 3 รอบในช่วงเวลาต่างกัน ถ้าดิสก์มีระบบ Burst ควรทดสอบนาน 10 นาทีขึ้นไป

ทำ VPS Benchmark ด้วย dd แทน fio ได้ไหม?

ใช้ได้แค่ประเมินคร่าวๆ เพราะ dd วัดได้เฉพาะแบบ Sequential และไม่ได้จำลองโหลดหลายคำขอพร้อมกัน สำหรับงาน Database หรือเว็บไซต์ควรใช้ fio

ผล VPS Benchmark ต่ำกว่าที่คาด ควรทำอย่างไร?

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

สรุป

VPS Benchmark ที่ดีไม่จำเป็นต้องใช้เครื่องมือซับซ้อน 4 คำสั่งในบทความนี้ครอบคลุม CPU และดิสก์ซึ่งเป็นคอขวดที่พบบ่อยที่สุด สิ่งสำคัญคือทดสอบซ้ำหลายช่วงเวลา ใช้พารามิเตอร์เดิมทุกครั้ง และดูความสม่ำเสมอมากกว่าตัวเลขสูงสุด

THAI DATA CLOUD ให้บริการทั้ง VPS และ Private Cloud Server ที่ใช้ทรัพยากรแบบ Dedicated [ตรวจสอบ: ผล Benchmark ที่เผยแพร่ได้และสเปกดิสก์ของแต่ละบริการ] หากต้องการให้ทีมช่วยอ่านผลทดสอบหรือประเมินว่าระบบควรใช้ทรัพยากรแบบไหน ปรึกษาได้ที่ ติดต่อ THAI DATA CLOUD

แชร์FacebookXLINELinkedIn

มีคำถามเรื่องบริการ? ติดต่อทีมงาน