Hiển thị các bài đăng có nhãn throughput. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn throughput. Hiển thị tất cả bài đăng

Thứ Hai, 20 tháng 3, 2017

IOPS và sự lựa chọn SAS, TRUESSD phù hợp ứng dụng của bạn

Data storage luôn là một trong những phần chậm nhất của bất cứ hệ thống nào. Để có một server hoạt động đảm bảo hiệu năng, bạn cần lựa chọn loại volume phù hợp nhất cho nhu cầu ứng dụng của mình. Ba thông số cơ bản đánh gía hiệu năng ổ cứng tôi hay quan tâm là: throughput , latency và IOPS. Chúng là gì? Dựa vào chúng để chọn lựa loại volume phù hợp như thế nào?
 

1. Throughput, Latency, IOPS là gì?

Để hiểu rõ về 3 thông số đáng quan tâm khi đánh giá một ổ cứng, chúng ta sẽ cùng trả lời 3 câu hỏi:
Bao nhiêu dữ liệu được truyền đi trong một giây?
Throughput là thông số được biết tới phổ biến nhất của ổ cứng, chỉ ra tốc độ transfer data (đơn vị thường là MB/s hoặc GB/s). Hay chính là thông số khi bạn check performace của ổ cứng bằng câu lệnh dd trong linux. Tuy nhiên, chỉ dựa vào thông số này để lựa chọn loại ổ cứng là phương án không khả thi bởi những loại ổ cứng trên thị trường hiện nay thông số này gần như luôn thừa cho ứng dụng của bạn. Bạn cần quan tâm tới hai thông số quan trọng hơn: latency và IOPS.
Mất bao lâu để bắt đầu thực hiện một data transfer?
Latency (đo bằng ms) là thời gian ổ cứng bắt đầu thực hiện một data transfer. Trong HDD vật lý truyền thống, latency bao gồm cả seek time (thời gian để đầu đọc tìm ra vị trí data) và rotational latency (độ trễ chuyển động quay của trục). Với throughput đều có thể đáp ứng nhu cầu, thông số latency sẽ quyết định hiệu năng của volume vì nó quyết định thời gian trễ khi bắt đầu thực hiện thao tác.
Còn điều gì còn quan trọng hơn thời gian trễ khi thao tác được thực hiện??? Đương nhiên là có, vấn đề là thao tác này có được phép thực hiện hay không? (^^)
Bao nhiêu thao tác có thể thực hiện trong cùng một thời gian?
Câu trả lời chính là thông số IOPS (Input/Output Operations Per Second hay Input/Output Per Second), hiểu đơn giản là số thao tác đọc/ghi trên ổ cứng trong một giây.
IOPS của SAS và SSD
Một ổ SAS 15.000rpm trung bình khoảng 200 IOPS trong khi ổ SSD có thể đạt từ vài nghìn IOPS cho tới vài triệu IOPS. Đều tạo nên khác biệt đáng kinh ngạc này đơn giản chỉ là do cấu tạo của hai loại ổ cứng, hay cấu trúc chip nhớ truy cập ngẫu nhiên của ổ SSD. Xem thêm thông số IOPS của một vài loại ổ cứng tại wiki.
IOPS quan trọng như thế nào?
Trên điện toán đám mây, nơi mà tài nguyên phần cứng được chia sẻ để dùng chung với nhiều người, IOPS quyết định độ nhanh và nhạy của volume do bản chất IOPS càng cao thì càng nhiều thao tác có thể thực hiện đồng thời một lúc, tốc độ xử lý càng nhanh. Điều đó trực tiếp dẫn tới tốc độ hoạt động ứng dụng của bạn.
Chúng tôi sẽ đưa ra một kết quả benchmark IOPS giữa hai loại volume trên hệ thống và gợi ý để giúp bạn có thể lựa chọn loại phù hợp cho server của mình. Nếu bạn muốn tự kiểm nghiệm hiệu năng của 2 loại volume, hãy đăng ký tài khoản tại manage.vccloud.vn và trải nghiệm 7 ngày miễn phí mọi tính năng trên hệ thống cloud server của chúng tôi. Chạy thật sự ứng dụng của bạn và phản hồi cho chúng tôi biết kết quả hoạt động của 2 loại volume với nhu cầu của bạn.
 

2. Lựa chọn SAS hay TRUESSD volume ?

Xét về tốc độ truy xuất, volume TRUESSD vượt trội hơn hẳn so với volume SAS. Tôi sẽ đưa ra 2 kết quả benchmark cho hai loại volume.
Kết qủa benchmark SAS volume và TRUESSD volume, cả hai cùng có dung lượng 40G và chưa có dữ liệu:
TRUESSD volume:
1
2
3
random-writers: (groupid=0, jobs=1): err= 0: pid=11266: Fri Mar 27 09:11:08 2015
read : io=25660KB, bw=25182KB/s, iops=6295, runt= 1019msec
write: io=25540KB, bw=25064KB/s, iops=6265, runt= 1019msec
SAS volume:
1
2
3
random-writers: (groupid=0, jobs=1): err= 0: pid=21341: Fri Mar 27 09:16:15 2015
read : io=25660KB, bw=2015.9KB/s, iops=503, runt= 12729msec
write: io=25540KB, bw=2006.5KB/s, iops=501, runt= 12729msec
Trên thực tế bài toán hiệu năng luôn đi kèm bài toán chi phí, hiện tại trên hệ thống Cloud Server giá thành của TRUESSD volume xấp xỉ 6 lần giá thành SAS volume. May mắn là cũng không phải bất cứ ứng dụng nào cũng cần dùng tới TRUESSD volume.
TRUESSD nên được dùng khi:
+ các dữ liệu truy xuất liên tục với tốc độ cao như dạng logging, swap, thumbs, caching…
+ dung lượng lưu trữ không tới vài TB
+ sẵn sàng chi trả chi phí cao cho hiệu suất cao, tuổi thọ dữ liệu cao hơn.
SAS nên được dùng khi:
+ cơ sở dữ liệu cần lưu trữ lớn vài TB
+ các dữ liệu có tính ổn định cao như ứng dụng web
+ cơ sở dữ liệu mức độ truy xuất ổn định (MySQL – Oracle – DB2 – SQL Server hay lưu trữ phim ảnh và MS Office)
+ không muốn chi trả quá nhiều chi phí

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