sysbench - معيار النظام وقاعدة البيانات
sysbench هي أداة معيار قابلة للبرمجة ومتعددة الخيوط بناءً على LuaJIT. إنها الأشهر لـ قياس قاعدة البيانات (خاصة MySQL و PostgreSQL عبر عبء عمل OLTP) ولكنها تأتي أيضاً مع اختبارات مدمجة لـ CPU والذاكرة وملفات I/O والخيوط والأقفال. لأن عبء العمل قابل للتعاون وقابل للبرمجة، فإنه ينتج أرقاماً قابلة للتكرار لتخطيط السعة والضبط ومقارنات قبل/بعد.
التثبيت
| المنصة | الأمر |
|---|
| Debian/Ubuntu | sudo apt install sysbench |
| Fedora/RHEL | sudo dnf install sysbench |
| Arch Linux | sudo pacman -S sysbench |
| macOS (Homebrew) | brew install sysbench |
| From source | build from the akopytov/sysbench repo |
| التحقق | sysbench --version |
هيكل الأمر
sysbench [testname] [options] {prepare | run | cleanup}
| المرحلة | الغرض |
|---|
prepare | إنشاء البيانات/الملفات التي يحتاجها الاختبار |
run | تنفيذ المعيار |
cleanup | إزالة بيانات/ملفات الاختبار |
خيارات عامة شائعة
| الخيار | الوصف |
|---|
--threads=N | عدد خيوط العامل |
--time=N | تشغيل لمدة N ثانية (0 = حتى الأحداث المنجزة) |
--events=N | الأحداث العام |
--rate=N | أحداث هدف/ثانية (تحديد المعدل) |
--report-interval=N | طباعة إحصائيات وسيطة كل N ثانية |
--warmup-time=N | إحماء قبل القياس |
--histogram | إظهار رسم بياني الكمون |
معيار CPU
# Verify primes up to 20000 across 4 threads for 30s
sysbench cpu --cpu-max-prime=20000 --threads=4 --time=30 run
| الخيار | الوصف |
|---|
--cpu-max-prime=N | الحد الأعلى لحساب رئيسي (حجم العمل) |
مقياس رئيسي: الأحداث في الثانية (أعلى أفضل).
معيار الذاكرة
sysbench memory --memory-block-size=1K --memory-total-size=100G \
--memory-oper=write --threads=4 run
| الخيار | الوصف |
|---|
--memory-block-size | حجم كل عملية الذاكرة |
--memory-total-size | إجمالي البيانات للتحويل |
| `—memory-oper=read | write` |
| `—memory-access-mode=seq | rnd` |
مقياس رئيسي: معدل نقل MiB/sec.
معيار File I/O
sysbench fileio --file-total-size=4G prepare
sysbench fileio --file-total-size=4G --file-test-mode=rndrw \
--time=60 --threads=8 run
sysbench fileio --file-total-size=4G cleanup
| الخيار | الوصف |
|---|
--file-total-size | حجم ملفات الاختبار الإجمالي |
--file-test-mode | seqrd, seqwr, rndrd, rndwr, rndrw |
--file-block-size | حجم كتلة I/O |
--file-fsync-freq | تكرار fsync |
مقاييس رئيسية: IOPS، throughput (MiB/s)، latency.
الخيوط والأقفال
sysbench threads --threads=64 --thread-yields=1000 --time=30 run
sysbench mutex --threads=64 --mutex-num=4096 run
قاعدة البيانات (OLTP) المعيار
sysbench تأتي Lua OLTP scripts (oltp_read_write, oltp_read_only, oltp_point_select, إلخ).
# Prepare 10 tables of 1,000,000 rows in a MySQL database
sysbench oltp_read_write \
--db-driver=mysql --mysql-host=127.0.0.1 --mysql-user=bench \
--mysql-password=secret --mysql-db=benchdb \
--tables=10 --table-size=1000000 prepare
# Run a 5-minute mixed read/write test with 16 threads
sysbench oltp_read_write \
--db-driver=mysql --mysql-host=127.0.0.1 --mysql-user=bench \
--mysql-password=secret --mysql-db=benchdb \
--tables=10 --table-size=1000000 --threads=16 --time=300 \
--report-interval=10 run
# Clean up
sysbench oltp_read_write --db-driver=mysql --mysql-db=benchdb cleanup
| الخيار | الوصف |
|---|
| `—db-driver=mysql | pgsql` |
--tables / --table-size | شكل مجموعة البيانات |
oltp_read_only / oltp_write_only | متغيرات خليط العمل |
--db-ps-mode=disable | تعطيل العبارات المحضرة |
مقاييس رئيسية: transactions/sec (TPS)، queries/sec (QPS)، latency percentiles.
قراءة النتائج
| المقياس | المعنى |
|---|
| events/s | عبء العملية |
| latency (avg/95th) | وقت الاستجابة؛ شاهد النسبة المئوية 95 |
| TPS / QPS | عبء معاملة/الاستعلام عن قاعدة البيانات |
| min/max/avg | توزيع توقيت كل حدث |
سير العمل المشتركة
# قارن CPU قبل/بعد تغيير الحاكم
sysbench cpu --cpu-max-prime=20000 --threads=$(nproc) --time=30 run
# فحص التخزين الكشك على قرص جديد
sysbench fileio --file-total-size=8G --file-test-mode=rndrw --time=60 run
# ضبط MySQL: تختلف --threads وساعة TPS/latency
الموارد