Thứ Bảy, 18 tháng 3, 2017

Kiểm tra tốc độ ổ cứng

Kiểm tra tốc độ đọc ghi ổ cứng

Quý khách vừa mua VPS/Server (dù là vHost hay là bất kì nhà cung cấp nào khác) thì đều có câu hỏi là VPS/Server của mình sẽ nhanh như thế nào. Làm thế nào để kiểm tra hiệu suất của VPS/server của mình? Trong bài viết này chúng tôi sẽ giải thích về tầm quan trọng của tốc độ đọc ghi của ổ cứng cũng như một số phương thức kiểm tra.

Vậy tại sao không phải là CPU, RAM hay tốc độ đường truyền mà là tốc độ đọc ghi của ổ cứng lại quan trọng nhất, để hiểu rõ được vấn đề này chúng ta cần tìm hiểu một số khái niệm bên dưới:

I. Random access và Sequential access:


Sequential access: là thuật ngữ dùng để miêu tả việc đọc hoặc ghi các bit dữ liệu liên tiếp nhau. Đối với ổ cứng thông thường, các bit dữ liệu được lưu trữ trên các sector, nếu dữ liệu được lưu trữ trên các sector liên tiếp, việc đọc dữ liệu sẽ nhanh hơn vì thời gian tìm kiếm (seek time) sẽ giảm đi. Tương tự, nếu dữ liệu được ghi liên tiếp thì sẽ nhanh hơn vì chỉ tốn một vòng quay để ghi các sector liên tiếp.
Random access: là thuật ngữ dùng để miêu tả việc đọc hoặc ghi các bit dữ liệu ngẫu nhiên lộn xộn trên các sector phân bố ngẫu nhiên trên ổ cứng. Vì dữ liệu nằm rời rạc nên phải tốn thời gian tìm kiếm, nên vấn đề đọc/ghi dữ liệu random thường khá tốn thời gian. Hãy tưởng tượng bạn cần đọc một file hình ảnh có kích thước 400KB, tuy nhiên hình ảnh này được lưu tại 100 sector nằm rời rạc thì việc hiển thị hình ảnh này mất rất nhiều thời gian. Hiện tượng trên được gọi là phân mảnh ổ cứng và thường chúng ta sử dụng tool Disk Defragmenter để sắp xếp lại.



II. Throughput:

Để kiểm tra tốc độ đọc ghi ổ cứng, rất nhiều khách hàng thường sử dụng câu lệnh dd như sau:
dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
Tuy nhiên đây chỉ là câu lệnh để kiểm tra việc ghi tuần tự từng block file (64k) xuống ổ cứng, các loại ổ cứng trên thị trường thường có thông số này rất cao: 250MB/s đối với HDD và 500MB/s đối với SSD. Thực tế, không phải VPS/Server lúc nào cũng đọc ghi tuần tự (sequential read/write) mà đa số là các tác vụ đọc ghi ngẫu nhiên (random read/write) như query database, đọc các file nằm rời rạc,.. vì vậy lúc này tham số random IOPS, latency mới cần cho hoạt động của VPS/Server.

III. Latency:

Latency là thời gian ổ cứng bắt đầu thực hiện một data transfer (chuyển dữ liệu), chỉ số này càng thấp càng tốt. Latency bao gồm seek time (thời gian tìm vị trí dữ liệu) và rotational latency (độ trễ chuyển động quay của trục - SSD không bị tính thời gian này). Đối với HDD thông thường mất khoảng 10 phút seek time cho 100,000 IO, tuy nhiên với SSD, thời gian này rất nhỏ và được tính bằng microsecond (1 microcosecond = 0.000001 giây). Đây chính là lý do mà SSD có tốc độ phản hồi nhanh hơn rất nhiều lần so với HDD. Latency chính là độ trễ của việc đọc/ghi dữ liệu, vì vậy latency cũng không kém phần quan trọng trong hiệu suất của một ổ cứng.

IV. IOPS:

IOPS (Input/Output Per Second) số thao tác đọc ghi trong một giây của ổ cứng. Vậy tại sao IOPS lại quan trọng? Bạn hãy hình dung bạn copy khoảng 100.000 file có dung lượng mỗi file khoảng 4k sang một thư mục khác, nếu bạn sử dụng ổ cứng SATA bình thường, bạn chỉ có thể copy khoảng 100 file/s, tuy nhiên nếu bạn dùng SSD thì thời gian có thể rút ngắn xuống 100 lần hoặc hơn vì SSD có chỉ số IOPS rất cao.

Đối với các ổ cứng, IOPS lần lượt như sau:
7,200 rpm SATA: 75~100 IOPS
10,000 rpm SATA: 125-150 IOPS
10,000 rpm SAS: 140 IOPS
15,000 rpm SAS: 175-210 IOPS
SSD: 30k~90k IOPS

Vậy tại sao tốc độ đọc ghi của ổ cứng lại quan trọng đến như vậy? Hãy hình dung bạn có môt web server chứa một website, khi người dùng truy cập vào website của bạn web server sẽ gọi các tiến trình xử lý các request, lúc này các tiến trình sẽ bắt đầu tìm kiếm tổng hợp các dữ liệu có trên ổ cứng để xử lý và trả kết quả về cho người dùng. Nếu tốc độ ổ cứng quá chậm, sẽ làm cho việc xử lý lâu hơn, tài nguyên CPU, RAM sẽ bị giữ ở đó và phải chờ cho đến khi việc tìm kiếm (read) từ ổ cứng kết thúc để tiếp tục xử lý và trả kết quả lại cho người dùng. Điều này đồng nghĩa với việc khi thời gian tìm kiếm dữ liệu giảm đi, tài nguyên RAM và CPU sẽ giải phóng nhanh hơn và lượng người có thể truy cập cùng lúc vào website có thể tăng lên tương ứng.

Trên thực tế khi VPS/Server hoạt động, dữ liệu rất rời rạc vì vậy cần phải kết hợp với latency thấp và IOPS mới tránh bị bottleneck (thắt cổ chai), làm ảnh hưởng đến hiệu suất của VPS/Server. Để biết điều đó, chúng ta cần phải đo các thông số random read/write IOPS, latency bằng một trong hai tool dưới đây:

1. FIO

Cài đặt và kiểm tra

yum -y --enablerepo=extras install epel-release

yum -y --enablerepo=epel install fio

yum -y install perl-core

wget -O fio-tests-1.0.tar.gz https://storpool.zendesk.com/attachments/token/XMmtKR4m6rOA5oDhoLoIe70DK/?name=fio-tests-1.0.tar.gz

unxz fio-tests.tar.xz

tar -xf fio-tests.tar

cd fio-tests

./run_quick /dev/sdX (với /dev/sdX là ổ cứng muốn kiểm tra)

Lưu ý: không test trên ổ cứng chứa OS vì tool sẽ xóa toàn bộ dữ liệu trên ổ cứng đó

2. Odin tool

Cài đặt và kiểm tra

wget http://upload.vhost.vn/upload/at_io_iops

chmod +x at_io_iops

mkdir /root/benchmark

Kiểm tra random read IOPS: ./at_io_iops --read --rand -s 4K --iops -p 16 -t 30 -u 8G -S --uncached -f /root/benchmark

Kiểm tra random write IOPS: ./at_io_iops --write --rand -s 4K --iops -p 16 -t 30 -u 8G -S --uncached -f /root/benchmark

Không có nhận xét nào:

Đăng nhận xét