تخطَّ إلى المحتوى

sysbench - معيار النظام وقاعدة البيانات

sysbench - معيار النظام وقاعدة البيانات

sysbench هي أداة معيار قابلة للبرمجة ومتعددة الخيوط بناءً على LuaJIT. إنها الأشهر لـ قياس قاعدة البيانات (خاصة MySQL و PostgreSQL عبر عبء عمل OLTP) ولكنها تأتي أيضاً مع اختبارات مدمجة لـ CPU والذاكرة وملفات I/O والخيوط والأقفال. لأن عبء العمل قابل للتعاون وقابل للبرمجة، فإنه ينتج أرقاماً قابلة للتكرار لتخطيط السعة والضبط ومقارنات قبل/بعد.

التثبيت

المنصةالأمر
Debian/Ubuntusudo apt install sysbench
Fedora/RHELsudo dnf install sysbench
Arch Linuxsudo pacman -S sysbench
macOS (Homebrew)brew install sysbench
From sourcebuild 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=readwrite`
`—memory-access-mode=seqrnd`

مقياس رئيسي: معدل نقل 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-modeseqrd, 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=mysqlpgsql`
--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

الموارد