Hướng dẫn cài đặt và sử dụng Sysbench kèm các câu lệnh sử dụng hiệu quả cho nhiều mục đích

 Lâu lắm không có thời gian để viết bài, hôm nay rãnh rỗi sẽ viết chi tiết xíu về Sysbench. Vậy nó là gì. Sysbench là một công cụ đo hiệu năng máy tính dùng để thực hiện các bài test khác nhau trên hệ thống. Nó có thể được sử dụng để đo hiệu năng của hệ thống, bao gồm các thành phần như CPU, bộ nhớ, đĩa cứng và hệ thống giao diện mạng...


Mô tả chung  là vậy, giờ thì cài nó nhanh như sau, hiện tại mình đang dùng Pop!_OS


wget -qO - https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash


sudo apt install -y sysbench


Hướng dẫn cài đặt và sử dụng Sysbench kèm các câu lệnh  sử dụng hiệu quả cho nhiều mục đích


Như trên là cách cài đặt nhanh Sysbench, cái này cũng khá là đơn gian khi cài, nhanh gọn lẹ. Với lại mục đích cũng cũng để testing Mysql vs Postgresql nên càng phải cài thêm mysql-client và postgresql-client nữa. Mục đích cài thêm để có giao tiếp giữa máy test và server database, chỉ vậy thôi. :)


sudo apt install mysql-client
sudo apt install postgresql-client

Lưu ý : Khi dùng Sysbench điều quan trọng nhất phải nhớ đó là Prepare và Run, nó là yếu tố quan trọng nhất cần phải nhớ. Còn Cleanup nếu bạn thật sự muốn test một lần xong xóa.

Prepare : tạo dữ liệu test
Run: Chạy test

Local  testing :

Sau khi cài đặt test thử FileIO(Dùng test hiệu năng ổ cứng)

sysbench --test=fileio --file-total-size=2G prepare 
sysbench --test=fileio --file-total-size=2G --file-test-mode=rndrw --max-time=300 --max-requests=0 run 
sysbench --test=fileio --file-total-size=2G cleanup


-test=fileio : sysbench sẽ chạy bài test fileio.

--file-total-size : Kích thước tổng cộng của tất cả các tệp mà sysbench sẽ tạo (2G sẽ tạo ra 2GB data như hình)

--file-test-mode: Sysbench sẽ thực hiện các hoạt động đọc và ghi ngẫu nhiên trên các file


Hướng dẫn cài đặt và sử dụng Sysbench kèm các câu lệnh  sử dụng hiệu quả cho nhiều mục đích


Test CPU : Tương tự test fileio, tự trải nghiệm nhé :)


sysbench --test=cpu --cpu-max-prime=20000 run


--test=cpu : Sysbench sẽ chạy bài test CPU. 

--cpu-max-prime=20000 : Sysbench sẽ tìm kiếm nguyên tố từ 2 đến 20000 và trả về thời gian mà cpu tính toán ra.

Test Memory : Tương tự test fileio, tự trải nghiệm nhé :)


sysbench --test=memory --memory-block-size=1M --memory-total-size=4G run


--test=memorySysbench sẽ chạy bài test memory.

--memory-block-size=1M : Sysbench sẽ tạo ra trong quá trình test mỗi block là 1M.

--memory-total-size=4G : Sysbench sẽ tạo ra kích thước quá trình test bao gồm tất cả các block lại lag 4G.

Test thread : Tương tự test fileio, tự trải nghiệm nhé :)

--test=threads : Chọn test luồng process

--num-threads: Số luồng cần chạy

--thread-yields: Mục đích truyền vào luồng process số yields, số giá trị cần chạy trong 1 luồng. 

--thread-locks: Số lần mà luồng  proccess sẽ thực hiện, có nghĩa là khi khóa rồi sẽ không thay đổi giá trị sẽ giúp kết quả tương đối hơn.


sysbench --test=threads --num-threads=4 --thread-yields=100000 --thread-locks=2 run


Test mutex (Mutual exclusion): là một khái niệm đa luồng, được sử dụng để đảm bảo rằng một tài nguyên chung không được truy cập bởi nhiều luồng cùng lúc. Đây chỉ là khái niệm cơ bản để dễ hiệu vậy thôi, nếu đọc đến đây bạn nên tìm hiểu kỹ về Mutual exclusion, vì đôi khi nó sẽ giúp bạn áp dụng vàoứng dụng của nó trong thực tế.



Hướng dẫn cài đặt và sử dụng Sysbench kèm các câu lệnh  sử dụng hiệu quả cho nhiều mục đích


sysbench --test=mutex --num-threads=4 --mutex-locks=1000000 run


Remote database access  testing :

OK,giờ là phần quan trọng nhất của Sysbench, nếu nói về quan trọng thì hầu như từ trên xuống dưới bài này phần testing nào cũng quan trọng, nhưng phần liên quan đến đến database để dùng testing thì sẽ được nhiều người quan tâm. Hầu như đa phần ai tìm đến Sysbench đa phân đều muốn test perfomance database là chính.


Postgresql : Server database Postgressql cần test, và trên máy client cài postgresql-client như hướng dẫn ở trên.


Hướng dẫn cài đặt và sử dụng Sysbench kèm các câu lệnh  sử dụng hiệu quả cho nhiều mục đích



sysbench --db-driver=pgsql --pgsql-user=xxx --pgsql_password=xxx --pgsql-db=sbench_db --pgsql-host=xxx.xxx.xxx.xxx --pgsql-port=5432 --tables=10 --table-size=1000000 --threads=4 --time=10 --events=0 --report-interval=1 --rand-type=uniform /usr/share/sysbench/oltp_read_write.lua prepare


--tables=10 : Chỉ định sẽ tạo ra 10 table trong database

--table-size=1000000: Insert vào database 1000000 record vào table

--threads=4 : Tạo 4 luồng xử lý, tướng đương chạy một lần tạo 4 table và insert cũng lúc 4 table.

--time=10 : Tương đương 1 xử lý này sẽ là 10 giây, vì đây là khởi tạo database nên để thời gian dài sẽ giảm đi thất thoát data mẫu.

--events=0: Khi để events bằng 0 thì nó sẽ hiểu Sysbench cứ tiếp tục chạy cho đủ --time yêu cầu, chạy hết --time xem như xong 1 tiến trình.

--report-interval=1 : Tương đương mỗi giây in ra để bạn dễ quan sát hơn.

--rand-type :  - Uniform sẽ sử dụng phân bố ngẫu nhiên trong quá trình test

                      -Gaussian sẽ sử dụng phân phối chuẩn (hay còn gọi là phân phối Gauss)

                      -Pareto sẽ sử dụng phân phối tối ưu hóa

oltp_read_write.lua : Khi cài đặt sysbench sẽ có các script này, sẽ có nhiều script với chức năng khác nhau, nhưng oltp read write nó sẽ include các file chức năng kia, chỉ cần lôi ra mà dùng. Có thể kiểm tra trong /usr/share/sysbench hoặc find / -name oltp_read_write.lua để tìm.

Còn OLTP (Online Transaction Processing) thì bạn nên tìm hiểu sâu hơn trên google, nó khá là hay và ứng dụng trong cuộc sống rất nhiều, còn đây sẽ nói ngắn gọn đơn giản cho bạn hình dung ra như sau .

Là một kiểu cơ sở dữ liệu được thiết kế để hỗ trợ các giao dịch online động và thực thi nhanh, được thiết kế để hỗ trợ tốc độ cao và hiệu suất tốt cho các giao dịch, các yêu cầu đọc/ghi nhỏ và đơn giản, ví dụ như thêm mới một hàng dữ liệu hoặc cập nhật một hàng dữ liệu đã tồn tại.

Ok, đơn giản vậ thôi, còn runprepare ở dòng lệnh trên nếu bạn đang phân vân nó là gì thì tôi hiểu là bạn không đọc bài này nghiêm túc rồi :)


Hướng dẫn cài đặt và sử dụng Sysbench kèm các câu lệnh  sử dụng hiệu quả cho nhiều mục đích


Quá trình tạo sẽ như sau 


Hướng dẫn cài đặt và sử dụng Sysbench kèm các câu lệnh  sử dụng hiệu quả cho nhiều mục đích


Quá trình chạy sẽ tạo ra data test, tiếp theo chỉ cần chạy cú pháp run sẽ sẽ chạy test hiệu năng


sysbench --db-driver=pgsql --pgsql-user=xxx --pgsql_password=xxx --pgsql-db=sbench_db --pgsql-host=xxx.xxx.xxx.xxx --pgsql-port=5432 --tables=10 --table-size=1000000 --threads=4 --time=10 --events=0 --report-interval=1 --rand-type=uniform /usr/share/sysbench/oltp_read_write.lua run


Chạy run thì tham số cũng như trên, nhưng khi chạy ra kết quả bạn cần phải hiểu một số thông tin sau

TPS(Transactions per second) là chỉ số dùng để đo hiệu xuất của hệ thống cơ sở dữ liệu, dùng đo lường Transaction mỗi giây, trong sysbench nó dùng để đo hiệu xuất OLTP (Online Transaction Processing) , kiểm tra đo lường mức độ đọc ghi, query, hoặc các giao dịch không đồng bộ khác nhau...

QPS (Queries per second) là chỉ số đo hiệu xuất hệ thống truy vấn mỗi giây, nó cũng được dùng để đo lường đọc ghi OLTP mỗi giây. Nó có thể truy vấn được tốc đọc ghi của hệ thống cơ sở dữ liệu.

LAT (ms,95%) Latency để tính đỗ trễ của một giao dịch trung bình trong 95%, tính bằng mili giây, nếu độ trễ càng thấp thì càng tốt.



Hướng dẫn cài đặt và sử dụng Sysbench kèm các câu lệnh  sử dụng hiệu quả cho nhiều mục đích


Bạn nên chạy test khoản 3 đến 4 lần để xem xét lấy ra kết quả trung bình cho hợp lý, sau khi test xong thì cleanup phát thì sẽ tự đông drop các data mẫu, thế là xong.


sysbench --db-driver=pgsql --pgsql-user=xxx --pgsql_password=xxx --pgsql-db=sbench_db --pgsql-host=xxx.xxx.xxx.xxx --pgsql-port=5432 --tables=10 --table-size=1000000 --threads=4 --time=10 --events=0 --report-interval=1 --rand-type=uniform /usr/share/sysbench/oltp_read_write.lua cleanup


MySql : Server database Mysql cần test, và trên máy client cài mysql-client như hướng dẫn ở trên.

Các thông số kỹ thuật thì cũng như Postgresql, chỉ cần chỉnh sửa vài chi tiết nhỏ là ok


sysbench --db-driver=mysql --mysql-user=xxx --mysql_password=xxx --mysql-db=xxx --mysql-host=xxx --mysql-port=3306 --tables=16 --table-size=10000 --threads=4 --time=10 --events=0 --report-interval=1 --rand-type=uniform /usr/share/sysbench/oltp_read_write.lua prepare


sysbench --db-driver=mysql --mysql-user=xxx --mysql_password=xxx --mysql-db=xxx --mysql-host=xxx --mysql-port=3306 --tables=16 --table-size=10000 --threads=4 --time=10 --events=0 --report-interval=1 --rand-type=uniform /usr/share/sysbench/oltp_read_write.lua run


sysbench --db-driver=mysql --mysql-user=xxx --mysql_password=xxx --mysql-db=xxx --mysql-host=xxx --mysql-port=3306 --tables=16 --table-size=10000 --threads=4 --time=10 --events=0 --report-interval=1 --rand-type=uniform /usr/share/sysbench/oltp_read_write.lua cleanup


Hướng dẫn cài đặt và sử dụng Sysbench kèm các câu lệnh  sử dụng hiệu quả cho nhiều mục đích

Bài viết ở trên xem như một phần tham khảo, để hiểu hơn hoặc cảm nhận thực sự về nó thì bạn nên cài đặt và chạynó, khi đó bạn mới chiêm nghiệm được điều hay :).


Nhãn: