Tôi sẽ đề nghị bạn sử dụng udev để đặt tham số cho các ổ SSD. Bằng cách này, bạn có thể định cấu hình bộ lập lịch hàng đợi cụ thể phù hợp hơn với SSD, v.v. Bạn cũng chỉ có thể áp dụng các tham số cho một số thiết bị, dựa trên nhiều thông số.
Bạn có thể có được các thuộc tính cụ thể cần thiết để khớp với các thiết bị của mình (ví dụ: kiểu đĩa và nhà sản xuất) bằng cách thực hiện:
udevadm info -a -p /sys/block/sda
và kiểm tra tất cả các cặp ATTR cho thiết bị khối của bạn.
Một lợi ích khác là khả năng thiết lập các tham số cho các đĩa có thể cắm được (ví dụ: trong các thùng chứa hoặc khay hotswap) và cài đặt sẽ được áp dụng cho tất cả các thiết bị mới, miễn là các thông số của thiết bị khớp với nhau.
Dưới đây là một ví dụ để áp dụng bộ lập lịch cụ thể cho SSD Intel, giá trị đọc mong muốn của bạn (4096 khối = 2048 kb) và cũng áp dụng bộ lập lịch khác cho tất cả các SSD khác:
cat /etc/udev/rules.d/99-ssd.rules
# http://unix.stackexchange.com/a/71409/36574
# Setting specific kernel parameters for a subset of block devices (Intel SSDs)
SUBSYSTEM=="block", ATTRS{model}=="Intel SSDSC*", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{bdi/read_ahead_kb}="2048", ATTR{queue/scheduler}="deadline"
# for all other non-rotational block devices set a scheduler to 'noop' and readahead to 1024KB
SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{bdi/read_ahead_kb}="1024", ATTR{queue/scheduler}="noop"
Sau khi lưu tệp, bạn có thể kiểm tra xem quy tắc của mình có khớp với thiết bị hay không và udev sẽ làm gì khi sử dụng udevadm:
udevadm test --action=add /sys/block/sda
Điều này in tất cả các quy tắc mà udev tải, những gì phù hợp, những gì không và những quyết định nào udev sẽ đưa ra khi thiết bị được cắm.
Hi vọng điêu nay co ich.