Tạo sọc_cache_size vĩnh viễn


15

tôi đã làm

echo 8192 > /sys/block/md0/md/stripe_cache_size

để cải thiện hiệu suất RAID của tôi và nó đã giúp rất nhiều.

Nhưng tôi vẫn không thể tìm ra cách làm cho nó vĩnh viễn.

Tôi đã cố gắng đặt nó trong /etc/rc.local - các lệnh khác được thực thi, nhưng nó đã bị ghi đè lên 256 ở nơi khác ... Có gợi ý nào không?


Đăng lại bình luận từ câu trả lời của tôi dưới đây; Tôi không chắc liệu bạn có nhìn thấy hay không vì tôi không chắc StackExchange hoạt động như thế nào: Hmmm ... Tôi không có RAID, vì vậy đây là một cú đánh dài, nhưng bạn có thể thử 'grep -R 256 / etc / init.d 'và' grep -R Stripe_cache_size /etc/init.d '?
zpletan

1
Gói sysfsutils sẽ giúp khắc phục vấn đề của bạn?
zpletan

Câu trả lời:


16

Thêm quy tắc udev, ví dụ /etc/udev/rules.d/60-md-stripe-cache.rules:

SUBSYSTEM=="block", KERNEL=="md*", ACTION=="change", TEST=="md/stripe_cache_size", ATTR{md/stripe_cache_size}="8192"

Tôi thực sự đã không thử điều này vì vậy nó có thể không đúng 100% (có thể là một số lỗi chính tả), nhưng nó phải gần. Kiểm tra man udevđể hiểu thêm.

Bạn cũng có thể muốn chạy các lệnh sau sau đó để áp dụng ngay quy tắc mới:

udevadm trigger
udevadm control --reload-rules

1
Cảm ơn bạn rất nhiều, đây cuối cùng là giải pháp hoàn hảo :-) Cú pháp là ok, tôi chỉ cần thêm 60- trước tên và tạo lại ramfs.
BarsMonster

1
Cảm ơn. Tôi không thể tin rằng đây vẫn là một vấn đề trong Ubuntu 13.10. Chỉ cần đi từ <10MB / giây và hoàn thành treo đến> 100 MB / giây trong khi sao chép từ một RAID được mã hóa sang một RAID khác, chỉ bằng cách thay đổi kích thước bộ đệm sọc thành giá trị hào phóng hơn nhiều.
frostschutz

Thật rõ ràng cho những người khác: trên ít nhất là các hệ thống Ubuntu hiện đại (17.04 trong trường hợp của tôi), có thể là các hệ thống khác, bạn cần xây dựng lại initramfs của mình ("sudo update-initramfs -u") sau khi tạo quy tắc mới này hoặc nó sẽ không thực sự có hiệu lực tự động.
Bryan Henry

1

Chỉ cần mở rộng trên bài cuối cùng; kịch bản bên dưới làm việc cho tôi. Chỉ cần trao đổi chi tiết của bạn giữa "<...>". Thưởng thức!


#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

#################NOTE######################
##  You are limited by CPU and memory too #
##  <Your Name> <Date of Modification>    #
##  stripe cache size and read-ahead      #
###########################################
echo 16384 > /sys/block/<Your RAID5 or 6 Volume>/md/stripe_cache_size
blockdev --setra 16384 /dev/<Your RAID5 or 6 Volume>

exit 0

3
Đừng nói "Chỉ để mở rộng bài đăng cuối cùng" bởi vì câu trả lời thường được xếp hạng theo phiếu bầu để có thể câu trả lời của bạn có thể xuất hiện phía trên câu bạn đang đề cập. Tham khảo bài viết theo tên tác giả. Nó rõ ràng hơn nhiều.
Warren Hill

0

Tôi cũng đang cố gắng để tìm ra điều này. Tôi đặt của tôi trong RC.local và không có may mắn. Tôi khởi động thủ công sau khi đăng nhập. Tôi cho rằng bạn có thể viết một tập lệnh để xử lý việc này và đưa nó vào "Ứng dụng khởi động" nhưng điều đó không giúp ích gì nếu bạn không đăng nhập vào gnome.


Đó là máy chủ Ubuntu, vì vậy không có may mắn ở đây.
BarsMonster

0

Gói sysfsutils sẽ giúp khắc phục vấn đề của bạn?

TRẢ LỜI GỐC:

Tôi không thể tìm ra cách nhận xét về câu hỏi của bạn; Tôi đoán tôi sẽ chỉnh sửa câu trả lời này khi tôi tìm hiểu thêm về vấn đề của bạn.

Bạn có thể đăng (hoặc pastebin, nếu nó dài) đầu ra của

grep -R md0 /etc/init.d

Không có gì tìm thấy ở đó.
BarsMonster

Hmmm ... Tôi không có RAID, vì vậy đó là một cú sút xa, nhưng bạn có thể thử 'grep -R 256 /etc/init.d' và 'grep -R Stripe_cache_size /etc/init.d' không?
zpletan

Cả hai đều không có kết quả.
BarsMonster

0

Tôi không có câu trả lời thực sự cho bạn, nhưng có lẽ bạn có thể thử tạo một kịch bản khởi động đơn giản mới bắt đầu. Tạo một tệp trong / etc / init với phần mở rộng .conf. Trong tập tin đặt:

start on started tty1

exec echo 8192 > /sys/block/md0/md/stripe_cache_size

Tôi nghĩ rằng nên chạy lệnh trong khoảng thời gian thiết bị đầu cuối đã khởi động, có lẽ là khoảng thời gian bạn đang chạy lệnh.


Tôi đã cố gắng đưa điều này vào tập lệnh khởi động (RC.local) và điều này không giúp được gì. Ngoài ra, vì đây là Ubuntu Server, không có thiết bị đầu cuối nào có thể ở đó sau khi khởi động lại, AFAIK.
BarsMonster

Tôi đã đề xuất điều này như là một phương pháp thay thế cho phương pháp RC.local. Có lẽ nó sẽ bắt đầu sau. Tôi thực sự không biết.
dùng1974

Đối với việc thiếu các thiết bị đầu cuối, tôi không có ý tưởng. Tại sao máy chủ không có ttys sau khi khởi động? Chúng ta có nghĩa là điều tương tự khi chúng ta nói thiết bị đầu cuối? Bất kể, bạn có thể sử dụng một dịch vụ khác để kích hoạt lệnh, chỉ cần thay đổitty1
user1974

0

Tổng số ảnh chụp trong bóng tối vì tôi không có thiết lập RAID 5 để kiểm tra: Có thể thêm một dòng với

chmod -w /sys/block/md0/md/stripe_cache_size

trong RC.local để xóa quyền ghi sau khi được đặt. Có lẽ điều đó sẽ ngăn nó khỏi bị thay đổi ở nơi khác?


Ý tưởng hay, nhưng có vẻ như có gì đó không ổn trong quá trình khởi động Ubuntu: -S Tôi sẽ thử và đăng ngày hôm nay.
BarsMonster

Không giúp được gì: - |
BarsMonster

0

Nối

echo 8192 > /sys/block/mdX/md/stripe_cache_size

để /etc/rc.local.


Xem câu hỏi - đây là điều đầu tiên tôi đã thử và nó không hoạt động, rõ ràng trình điều khiển md đã được khởi tạo lại hoặc một cái gì đó sau khi RC.local được thực thi.
BarsMonster

-1

Trang này gợi ý rằng kích thước sọc (hoặc chiều rộng) nên được thiết lập khi fs được thiết lập. Có lẽ tunefs có thể giúp ở đây?


2
Đó là điều hoàn toàn khác. Kích thước bộ đệm sọc là một cài đặt cho trình điều khiển hạt nhân MD trên bộ nhớ cho bộ đệm sọc.
BarsMonster
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.