Cách đánh giá hệ thống của bạn (CPU, File IO, MySQL) bằng Sysbench

theanh

Administrator
Nhân viên
sysbench là một bộ công cụ chuẩn cho phép bạn nhanh chóng có được ấn tượng về hiệu suất hệ thống, điều này rất quan trọng nếu bạn dự định chạy cơ sở dữ liệu dưới tải nặng. Bài viết này giải thích cách đánh giá hiệu suất CPU, IO tệp và MySQL của bạn bằng sysbench.

1 Cài đặt sysbench​

Trên Debian/Ubuntu, sysbench có thể được cài đặt như sau:
Mã:
sudo apt-get install sysbench
Trên CentOS và Fedora, có thể cài đặt từ kho lưu trữ EPEL.

Thêm kho lưu trữ EPEL:
Mã:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
yum -y install epel-release
yum -y update
Sau đó cài đặt sysbench bằng yum:
Mã:
yum install sysbench
Xem tổng quan về các tùy chọn sysbench

Xem
Mã:
man sysbench
để tìm hiểu thêm về các tham số của nó.

Bây giờ tôi sẽ thực hiện ba bài kiểm tra cơ bản đơn giản để cho bạn biết thêm về hiệu suất CPU, hiệu suất IO tệp và hiệu suất MySQL của bạn.

2 Điểm chuẩn CPU​

Bạn có thể đánh giá hiệu suất CPU của mình như sau:
Mã:
sysbench --test=cpu --cpu-max-prime=20000 run
Mã:
root@server1:~#sysbench--test=cpu--cpu-max-prime=20000run
sysbench0.4.12:multi-threadedsystemevaluationbenchmark
 
Chạy thử nghiệm với các tùy chọn sau:
Số luồng:1
 
Đang thực hiện CPUperformancebenchmark
 
Luồng đã bắt đầu!
Xong.
 
Số lượng luồng tối đa đã được kiểm tra trong CPUtest:20000
 
 
Tổng kết thực thi thử nghiệm:
Tổng thời gian:23,8724 giây
Tổng số sự kiện:10000
Tổng thời gian thực thi sự kiện:23,8716
Thống kê theo yêu cầu:
Tối thiểu:2,31ms
Trung bình:2,39ms
Tối đa:6,39ms
Xấp xỉ 95%:2,44ms
 
Công bằng luồng:
Sự kiện (trung bình/độ lệch chuẩn):10000,0000/0,00
Thời gian thực thi (trung bình/độ lệch chuẩn):23,8716/0,00
 
root@server1:~#
Bạn thấy rất nhiều số, quan trọng nhất là tổng thời gian:

totaltime:23.8724s

Tất nhiên, bạn phải so sánh các điểm chuẩn trên nhiều hệ thống để biết những con số này có giá trị gì.

3 Điểm chuẩn IO tệp​

Để đo hiệu suất IO tệp, trước tiên chúng ta cần tạo một tệp thử nghiệm lớn hơn nhiều so với RAM của bạn (vì nếu không, hệ thống sẽ sử dụng RAM để lưu trữ đệm, làm thay đổi kết quả điểm chuẩn) - 150 GB là một giá trị tốt:
Mã:
sysbench --test=fileio --file-total-size=150G chuẩn bị
Sau đó, chúng ta có thể chạy điểm chuẩn:
Mã:
sysbench --test=fileio --file-total-size=150G --file-test-mode=rndrw --init-rng=on --max-time=300 --max-requests=0 chạy
Mã:
root@server1:~#sysbench--test=fileio--file-total-size=150G--file-test-mode=rndrw--init-rng=on--max-time=300--max-requests=0run
sysbench:/usr/lib/libmysqlclient.so.18:noversioninformationavailable(requiredbysysbench)
sysbench0.4.12:multi-threadedsystemevaluationbenchmark
 
Chạy thử nghiệm với các tùy chọn sau:
Số luồng: 1
Đang khởi tạo trình tạo số ngẫu nhiên từ bộ đếm thời gian.
 
 
Extrafileopenflags:0
128 tệp, 1,1719Gb/mỗi
150Gb tổng kích thước tệp
Kích thước khối16Kb
Số lượng yêu cầu ngẫu nhiên cho randomIO:0
Tỷ lệ đọc/ghi cho randomIOtest kết hợp:1,50
PeriodicFSYNC enabled, gọi fsync() mỗi 100 yêu cầu.
Gọi fsync() vào cuối bài kiểm tra, Enabled.
Sử dụng synchronizeousI/Omode
Thực hiện randomr/wtest
Luồng đã bắt đầu!
Đã vượt quá giới hạn thời gian, đang thoát...
Xong.
 
Các hoạt động được thực hiện: 600Đọc, 400Ghi, 1186Khác=2186Tổng cộng
Đọc9,375MbĐã ghi6,25MbTổng số đã truyền15,625Mb(53,316Kb/giây)
3,33Yêu cầu/giâyđã thực hiện
 
Tóm tắt các hoạt động thử nghiệm:
Tổng thời gian:300,0975 giây
Tổng số sự kiện:1000
Tổng thời gian thực hiện sự kiện:158,7611
Thống kê theo yêu cầu:
Tối thiểu:0,01ms
Trung bình:158,76ms
Tối đa:2596,96ms
Xấp xỉ 95Phần trăm:482,29ms
 
Threadsfairness:
events(avg/stddev):1000.0000/0.00
executiontime(avg/stddev):158.7611/0.00
 
root@server1:~#
Con số quan trọng là giá trị Kb/giây:

Read9.375MbWritten6.25MbTotaltransferred15.625Mb(53.316Kb/giây)

Sau khi đánh giá chuẩn, bạn có thể xóa tệp kiểm tra 150GB khỏi hệ thống:
Mã:
sysbench --test=fileio --file-total-size=150G cleanup

4 MySQL Benchmark​

Để đo hiệu suất MySQL, trước tiên chúng ta tạo một bảng thử nghiệm trong cơ sở dữ liệu test với 1.000.000 hàng dữ liệu:
Mã:
sysbench --test=oltp --oltp-table-size=1000000--db-driver=mysql --mysql-db=test--mysql-user=root --mysql-password=yourrootsqlpassword prepare
Mã:
root@server1:~# sysbench --test=oltp --oltp-table-size=1000000--db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=yourrootsqlpassword prepare
sysbench 0.4.12: chuẩn đánh giá hệ thống đa luồng
Mã:
Không có trình điều khiển DB nào được chỉ định, sử dụng mysql
Đang tạo bảng 'sbtest'...
Đang tạo 1000000 bản ghi trong bảng 'sbtest'...
root@server1:~#
Thay thế từyourrootsqlpassword bằng mật khẩu gốc MySQL của bạn trong lệnh trên. Thực hiện tương tự trong các lệnh tiếp theo.

Sau đó, bạn có thể chạy chuẩn MySQL như sau:
Mã:
sysbench --test=oltp --oltp-table-size=1000000--db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=yourrootsqlpassword --max-time=60 --oltp-read-only=on --max-requests=0 --num-threads=8 run
Mã:
root@server1:~#sysbench--test=oltp--oltp-table-size=1000000--db-driver=mysql --mysql-db=test--mysql-user=root--mysql-password=yourrootsqlpassword--max-time=60--oltp-read-only=on--max-requests=0--num-threads=8run
sysbench0.4.12:multi-threadedsystemevaluationbenchmark
 
NoDBdrivers specified, usingmysql
Runthetestwithfollowingoptions:
Numberofthreads:8
 
Thực hiện kiểm tra OLTP.
Chạy kiểm tra OLTP hỗn hợp
Thực hiện kiểm tra chỉ đọc
Sử dụng Specialdistribution (12 lần lặp, 1% giá trị được trả về trong 75% trường hợp)
Sử dụng "BEGIN" để bắt đầu giao dịch
Sử dụng auto_incontheidcolumn
Chuỗi đã bắt đầu!
Đã vượt quá giới hạn thời gian, đang thoát...
(tin nhắn cuối cùng được lặp lại 7 lần)
Xong.
 
OLTPteststatistics:
queriesperformed:
read:2253860
write:0
other:321980
total:2575840
transactions:160990(2683.06persec.)
deadlocks:0(0.00persec.)
read/writerequests:2253860(37562.81persec.)
otheroperations:321980(5366.12persec.)
 
Tổng kết thực hiện thử nghiệm:
Tổng thời gian:60,0024 giây
Tổng số sự kiện:160990
Tổng thời gian thực hiện sự kiện:479,3419
Thống kê theo yêu cầu:
Tối thiểu:0,81ms
Trung bình:2,98ms
Tối đa:3283,40ms
Xấp xỉ 95%:4,62ms
 
Công bằng luồng:
Sự kiện (trung bình/độ lệch chuẩn):20123,7500/63,52
Thời gian thực hiện (trung bình/độ lệch chuẩn):59,9177/0,00
 
root@server1:~#
Con số quan trọng là giá trị giao dịch mỗi giây:

transactions:160990(2683.06persec.)

Để dọn dẹp hệ thống sau đó (tức là xóa bảng kiểm tra), hãy chạy:
Mã:
sysbench --test=oltp--db-driver=mysql --mysql-db=test --mysql-user=root --mysql-password=yourrootsqlpassword cleanup

5 Liên kết​

 
Back
Bên trên