Benchmark hệ thống Linux với sysbench

Trong bài blog này, tôi sẽ trình bày cách sử dụng sysbench để kiểm tra hiệu suất CPU, bộ nhớ và lưu trữ của hệ thống Linux. Tôi cũng có cơ hội tiếp cận với một số phần cứng đa dạng (laptop, desktop, máy chủ/server). Vì thế tôi sẽ cung cấp một số kết quả cho bạn để tiện so sánh.

Các nền tảng mà tôi sẽ benchmark là:

  • Một máy tính xách tay mới có bộ xử lý Intel di động và SSD;
  • Một máy tính để bàn với bộ xử lý Intel và SSD;
  • Một máy chủ cũ được trang bị 4 bộ xử lý Xeon, bộ điều khiển RAID và các ổ đĩa quay (ví dụ ổ HDD);
  • Một máy chủ với CPU AMD, bộ điều khiển RAID và các ổ SSD.

Cập nhật vào tháng 6/2024: Tôi đã bổ sung thêm một VirualBox VM để so sánh.


1. Cài đặt

Bạn có thể cài đặt sysbench với câu lệnh sau:

sudo apt install sysbench

2. Kiểm tra CPU

Đơn luồng (single thred)

Bạn có thể chạy kiểm tra sysbench cpu với câu lệnh sau:

sysbench cpu run

Kết quả thể hiện bằng “sự kiện mỗi giây” (4040 như ví dụ bên dưới):

sysbench cpu đơn luồng

Đa luồng (multi-thread)

Theo mặc định, sysbnech chạy kiểm tra cpu với luồng đơn. Để kiểm tra hiệu suất đa luồng của CPU, bạn trước hết cần phải xác định xem số lượng luồng có sẵn:

grep processor /proc/cpuinfo | wc -l

Sau đó bạn có thể chạy sysbench lại lần nữa, chỉ định số luồng muốn kiểm tra:

sysbench cpu run --threads=<threads>

Kết quả:

Nền tảngCPUĐơn luồng [sk/giây]LuồngĐa luồng [sk/giây]
LaptopIntel Core i7-1260P33541633283
DesktopIntel Core i5-12400F37731221730
Server 14 x Xeon E7-4830 v38349655604
Server 2AMD EPYC 7402P16624842003

3. Bộ nhớ (memory)

Bây giờ, bạn có thể đo lường tốc độ của bộ nhớ với câu lệnh:

sysbench memory run

Kết quả là tốc độ truyền dữ liệu đo được, được trình bày với đơn vị MiB/giây (sec).

Nếu bạn muốn so sánh kết quả của bạn với tôi, bạn cũng có thể kiểm tra loại và tốc độ của cài đặt memory bằng lệnh:

sudo dmidecode --type 17

Kết quả:

Nền tảngMemoryTốc độ truyền [MiB/sec]
LaptopLPDDR5 6400 MHz10691
DesktopDDR4 2133 MHz10000
Server 1DDR4 2133 MHz4525
Server 2DDR4 3200 MHz5822

4. Storage (lưu trữ)

Bạn cũng có thể sử dụng sysbench để kiểm tra hiệu suất của storage của thiết bị. Điều này cần tiến hành tinh tế hơn một chút vì nhiều lý do khác nhau:

  1. Kiểm tra hiệu suất storage trước hết yêu cầu tạo một số file kiểm tra;
  2. SSD và card RAID có trình điều khiển tích hợp (build-in) kèm với cache (bộ nhớ đệm) sẽ ảnh hưởng lớn đến kết quả;
  3. Các thông số kiểm tra mặc định của sysbench không phản ánh mức sử dụng thực tế của thiết bị lưu trữ.

Vì vậy, điều đầu tiên cần làm là tạo ra các file sẽ được sử dụng để kiểm tra:

sysbench fileio --file-total-size=5G --file-num=5 prepare

Như đã đề cập ở phần trên, tôi sẽ bổ sung thêm các tham số để chạy kiểm tra. Điều này sẽ có tính đại diện tốt hơn cho việc sử dụng thực tế, và cho phép trình điều khiển (controller) và bộ nhớ đệm (cache) được sử dụng trong quá trình kiểm tra:

  • Thực hiện kiểm tra với mode async;
  • Đồng bộ hóa storage chỉ một lần vào cuối bài kiểm tra.
  • Đối với kiểm tra truy cập tuần tự (sequential access), hãy sử dụng các khối lớn hơn 1MB;
  • Đối với kiểm tra truy cập ngẫu nhiên (random access), hãy sử dụng các khối nhỏ hơn 4KB;

Để kiểm tra truy cập ngẫu nhiên của storage:

sysbench fileio --file-total-size=5G --file-num=5 --file-io-mode=async --file-fsync-freq=0 --file-test-mode=rndrd --file-block-size=4k run
sysbench fileio --file-total-size=5G --file-num=5 --file-io-mode=async --file-fsync-freq=0 --file-test-mode=rndwr --file-block-size=4k run

Để kiểm tra truy cập tuần tự của storage:

--file-test-mode=seqrd --file-block-size=1M run
sysbench fileio --file-total-size=5G --file-num=5 --file-io-mode=async --file-fsync-freq=0 --file-test-mode=seqwr --file-block-size=1M run

Kết quả:

Nền tảngStoragernd read [MiB/sec]rnd write [MiB/sec]seq read [MiB/sec]seq write [MiB/sec]
Laptop2TB Samsung SSD 980 PRO NVMe44932853123074955
Laptop2TB Crucial X8 portable SSD44281966122781616
Desktop2TB Samsung SSD 990 PRO NVMe42063403159258165
Server 1RAID controller with a single 15000 rpm SAS spinning disk1091483326418
Server 1RAID controller with an array of 15000 rpm SAS spinning disks1055222905490
Server 2RAID controller with an array of 3 SATA SSD26151453104722736

Ngoài ra, lưu ý rằng bạn có thể sử dụng câu lệnh sau để kiểm tra kiểu storage trên hệ thống:

sudo lshw -class disk -class storage
Kiểu storage

5. VirtualBox VM

Để thêm một số yếu tố so sánh, tôi triển khai một máy chủ ảo VirtualBox VM trên Server 2. VM có 4 core (lõi), RAM có 4GB, và một đĩa VDI duy nhất. Dưới đây là các kết quả mà tôi nhận được, so sánh với các kết quả của máy chủ host:

VMHost serverKhác biệt
CPU : Single thread [evts/sec]15721662-5%
CPU : 4 threads [evts/sec]59966631-9%
Memory : Transfer speed [MiB/sec]51115822-12%
Storage : rnd read [MiB/sec]782615-97%
Storage : rnd write [MiB/sec]1341453-90%
Storage : seq read [MiB/sec]118710472-88%
Storage : seq write [MiB/sec]7952736-70%

Như chúng ta có thể dự đoán, có một hình phạt nhỏ khi sử dụng VM đối với CPU và bộ nhớ. Tuy nhiên hình phạt với storage là rất lớn: rơi rụng tới 90% hiệu suất!

Tôi đã kiểm tra lại trên một máy chủ khác và đi đến cùng kết luận: sử dụng virtual disk là nguyên nhân gây suy giảm hiệu suất khoảng 90%.

(Dịch từ bài viết Benchmark Linux systems with sysbench, của Thibault Debatty, bài đăng được cấp phép CC BY-SA 4.0)

Viết một bình luận