< Orange Pi > Sysbench เครื่องมือ benchmark ของ Embedded Linux [2]

ในบทความ “Sysbench เครื่องมือ benchmark ของ Embedded Linux” เราได้แนะนำ และทดลองใช้งาน โปรแกรม Sysbench โดยการวัดประสิทธิภาพของ CPU รวมถึงการแนะนำฟังค์ชั่นอื่นๆของ Sysbench ไปบ้างแล้ว ในคราวนี้ เราจะมาแนะนำฟังค์ชั่นเพิ่มเติมอีก 2 ฟังค์ชั่น นั่นคือการทดสอบประสิทธิภาพการทำงานในระบบฐานข้อมูล และการทำงานในด้านการอ่านเขียนข้อมูลลงบน Flash Memory

ก่อนที่จะสามารถทดสอบระบบฐานข้อมูล ได้นั้น เราต้องติดตั้ง ระบบจัดการฐานข้อมูล เสียก่อน โดยในที่นี้ผมเลือกที่จะติดตั้ง MariaDB แทนที่จะเป็น MySQL ซึ่ง MariaDB สามารถใช้แทน MySQL ได้อย่างไม่มีปัญหาด้านความเข้ากันได้ของระบบ หากยังไม่ได้ติดตั้ง MariaDB ก็สามารถติดตั้งตามบทความในหัวข้อ “< Orange Pi > แมวน้ำก็มา! Armbian ก็รองรับ MariaDB นะ” ก่อนที่จะเริ่มการทดสอบได้ครับ

ก่อนอื่นเลยการทดสอบระบบฐานข้อมูลนั้น เราจำเป็นที่จะต้องสร้างตัวฐานข้อมูลก่อน โดยในตัวอย่างการใช้งานฐานข้อมูล MariaDB ในบทความ “< Orange Pi > แมวน้ำก็มา! Armbian ก็รองรับ MariaDB นะ”  ซึ่งในบทความนั้นเราได้สร้างฐานข้อมูลไว้อันหนึ่งชื่อ “dbtest” และเราจะใช้ฐานข้อมูลนั้นแหละครับ ในการทดสอบ

จากนั้นเรายังต้องเตรียมข้อมูลตารางในฐานข้อมูล สำหรับการทดสอบอีกด้วย แต่ Sysbench นั้น มีคำสั่งสำหรับเตรียมข้อมูลชุดนี้อยู่แล้ว

โดย yourrootsqlpassword ให้แทนด้วยรหัสผ่านของฐานข้อมูล ที่เราได้ตั้งไว้เมื่อตอนติดตั้งฐานข้อมูล

opi2_sysb01

โดยคำสั่งชุดนี้ sysbench จะสร้างตารางที่มีข้อมูลที่ชื่อ sbtest โดยในตารางนั้นมีทั้งหมด 1 ล้านเรกคอร์ด โดยกำหนดจาก –oltp-table-size=1000000 สำหรับใช้ในการทดสอบ

เมื่อสร้างฐานข้อมูลแล้ว สร้างตารางแล้ว และมีชุดข้อมูลแล้ว ก็สามารถเริ่มการทดสอบได้

opi2_sysb02

โดยการทดสอบนี้จะใช้ขนาดตารางเท่ากับที่เราตั้งไว้ในตอนเตรียมตัวจากคำสั่ง –oltp-table-size=1000000 กำหนดจำนวนการขอแบบไม่จำกัด จำกัดเวลาในการทำงานไว้ที่ 60 วินาที และกำหนดจำนวนเธรดส์ไว้ที่ 8 เธรดส์
รอสักพักใหญ่ๆ จนกว่าการทดสอบจะเสร็จสิ้นลง

opi2_sysb03

จากรายงานผลการทดสอบนั้น จะแสดงจำนวน queries ซึ่งรวมแล้วได้ 183,472 ครั้ง ในเวลา 60.0124 วินาที
มีจำนวน Transactions ทั้งหมด 11,467 ครั้ง เฉลี่ยแล้วประมาณ 191.08 ครั้งต่อวินาที
มีการร้องขอเพื่ออ่าน/เขียนทั้งหมด 160,538 ครั้ง เฉลี่ยประมาณ 2,675.08 ครั้งต่อวินาที
โดยรวมแล้วถือว่าไม่มากเท่าไหร่ หากเทียบกับการเป็น Server ข้อมูล
หลังจากที่ดูข้อมูลทุกอย่างแล้ว เราจำเป็นต้องเก็บกวาดข้อมูลที่ Sysbench สร้างขึ้นด้วย เนื่องจากเราคงไม่สามารถนำมันไปใช้งานอะไรได้อีก

opi2_sysb04

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

ต่อมาเราจะมาดูกันว่า หากเราจะทดสอบการอ่าน/เขียนข้อมูล ลงบนหน่วยความจำ Flash Memory นั้นจะทดสอบอย่างไร และทำอะไรกับการทดสอบได้บ้าง

ก่อนอื่นเลยเราต้องให้ระบบเตรียมไฟล์ทดสอบด้วยคำสั่ง

opi2_sysb05

เราสามารถกำหนดขนาดไฟล์ที่จะใช้ทดสอบผ่านคำสั่ง –file-total-size=2G ซึ่งในที่นี้กำหนดไว้ที่ 2GB สำหรับขนาดที่เหมาะสมของไฟล์ที่จะใช้ทดสอบนี้ แนะนำว่าควรจะมีขนาดใหญ่กว่า RAM เพื่อลดผลกระทบจากการใช้ RAM เป็นแคชไฟล์ในการทำงาน ซึ่งอาจจะทำให้การทดสอบบน เครื่องที่มี RAM ไม่เท่ากัน อาจจะทำให้ได้ผลที่ต่างกันมากกว่า ความเร็วของ Flash Memory ตามที่ควรจะเป็น
โดยคำสั่งชุดนี้ จะไปสร้างไฟล์ ขนาด 16MB จำนวน 128ไฟล์ ในโฟล์เดอร์ home/usr0

หลังจากที่เตรียมไฟล์เสร็จแล้ว เรามาเริ่มทดสอบกันเลยด้วยคำสั่ง

opi2_sysb06

หลังจากสั่งทดสอบแล้วระบบก็จะแจ้งรายละเอียดต่างๆให้เราทราบ จากนั้นเราก็รอ…
จนกว่าระบบจะทดสอบเสร็จสิ้น

opi2_sysb07

ผลที่ได้ก็จะแจ้งว่าระบบทำอะไรไปบ้าง เช่นมีการอ่านเขียนกี่ไฟล์ ใช้เวลานานแค่ไหน ส่วนที่น่าสนใจจะอยู่ที่ Total transferred ที่บอกว่าการอ่าน/เขียนข้อมูลทั้งหมดมีขนาดเท่าไหร่ ภายในเวลาที่ทำงาน (total time)
ในการทดสอบนี้ได้ผลออกมาว่า มีการอ่าน/เขียนไฟล์ทั้งหมด 23.438MB โดยเป็นการอ่านไฟล์ 14.062MB และเขียนไฟล์ 9.375MB ภายในเวลา 306.0977 วินาที และความเร็วเฉลี่ยในการอ่าน/เขียนไฟล์ที่ 78.406KB/s ต่อวินาที ซึ่งนับว่าเป็นที่น่าพอใจในความเร็วนี้

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

opi2_sysb08

ไฟล์ที่ถูกสร้างไว้ใน home/usr0 เพื่อใช้สำหรับทดสอบนั้นก็จะถูกล้างออกไปหมดจด
เป็นอันจบสิ้นพิธีการทดสอบ

คราวหน้าจะพูดถึงการตั้งค่าต่างๆในการทดสอบ เพื่อให้สามารถตั้งค่าทดสอบต่างๆได้เหมาะสมมากขึ้น

ปล. ผมยังสงสัยเรื่องหน่วย ของหน่วยความจำ หรือขนาดไฟล์ ที่ใช้ในการทดสอบพอสมควรนะครับ เนื่องจากว่าอักษรที่ใช้ในการรายงานผลการทดสอบนั้น ใช้ตัว b ซึ่งควรจะหมายถึงหน่วยเป็น bits แต่ในข้อมูลจากที่อื่น หรือแม้แต่ตู่มือของ Sysbench เอง กลับใช้ B ในการบ่งบอกหน่วยซึ่งมีหน่วยเป็น Bytes ที่สำคัญ ในไฟล์ที่ถูกสร้างขึ้นมาเพื่อใช้ในการทดสอบนั้น ตัว OS เองก็แสดงออกมาในหน่วยของ Byte ตามปกติ และมีขนาดที่เท่ากับสิ่งที่เราได้กำหนดไว้ เพียงแต่สัญลักษณ์ที่ Sysbench รายงานมาให้เรานั้นใช้ b เท่านั้นเอง ดังนั้นผมจึงเปลี่ยนอักษรเป็น B ตามที่ควรจะเป็นครับ