Зроби постійний_cache_size постійним


15

я зробив

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

для покращення моєї роботи RAID, і це дуже допомогло.

Але я досі не можу зрозуміти, як зробити це постійним.

Я намагався його встановити в /etc/rc.local - інші команди виконуються, але це було переписано на 256 в інших місцях ... Будь-які підказки?


Повторний коментар з моєї відповіді нижче; Я не впевнений, бачили ви це чи ні, оскільки я не впевнений, як працює StackExchange: Хммм ... у мене немає RAID, тому це начебто довгий знімок, але чи можете ви спробувати 'grep -R 256 / тощо / init.d 'і' grep -R stripe_cache_size /etc/init.d '?
зплетан

1
Чи допоможе пакет sysfsutils вирішити вашу проблему?
зплетан

Відповіді:


16

Додайте правило udev, наприклад до /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"

Я насправді цього не пробував, так що це може бути не на 100% правильно (можуть бути помилки), але це повинно бути близько. Перевірте, man udevщоб зрозуміти більше.

Ви також можете потім виконати такі команди, щоб негайно застосувати нове правило:

udevadm trigger
udevadm control --reload-rules

1
Дякую вам, це, нарешті, ідеальне рішення :-) Синтаксис - це нормально, я просто повинен був додати 60-, перш ніж ім'я, та відновити рампи.
BarsMonster

1
Спасибі. Я не можу повірити, що це все ще проблема в Ubuntu 13.10. Просто перейшов від <10 Мб / с, а завершене зависає до> 100 МБ / с, копіюючи з одного зашифрованого RAID в інший, просто змінивши розмір кешу смуги на набагато щедре значення.
frostschutz

Просто для інших зрозуміло: щонайменше сучасні системи Ubuntu (в моєму випадку 17.04), можливо, інші, вам потрібно відновити свої initramfs ("sudo update-initramfs -u") після створення цього нового правила, або воно фактично не буде набувають чинності автоматично.
Брайан Генрі

1

Просто для розширення на останній посаді; сценарій під ним працює для мене. Просто поміняйте свої дані між "<...>". Насолоджуйтесь!


#!/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
Не кажіть "Просто для розширення останнього допису", оскільки відповіді, як правило, оцінюються за голосами, так що можливо ваша відповідь може виявитися вище тієї, про яку ви посилаєтесь. Повідомлення посилайтесь на ім’я авторів. Це набагато зрозуміліше.
Warren Hill

0

Я також намагаюся це з'ясувати. Я ставлю свою в rc.local і не пощастило. Я запускаю його вручну після входу в систему. Я вважаю, що ви можете написати сценарій для вирішення цього питання і помістити його у "Заявки на запуск", але це зовсім не допоможе, якщо ви не ввійшли в gnome.


Це сервер ubuntu, тому не щастить тут.
BarsMonster

0

Чи допоможе пакет sysfsutils вирішити вашу проблему?

ОРИГІНАЛЬНИЙ ВІДПОВІДЬ:

Я не можу зрозуміти, як прокоментувати ваше запитання; Я думаю, що я відредагую цю відповідь, коли я дізнаюся більше про вашу проблему.

Чи можете ви розмістити (або пастин, якщо він довгий) вихід?

grep -R md0 /etc/init.d

Нічого там не знайдено.
BarsMonster

Гммм ... у мене немає RAID, тож це щось на зразок довгого удару, але чи можете ви спробувати 'grep -R 256 /etc/init.d' та 'grep -R stripe_cache_size /etc/init.d'?
zpletan

обидва результати не дали результатів.
BarsMonster

0

Я не маю реальної відповіді для вас, але, можливо, ви можете спробувати створити простий початковий сценарій запуску. Створіть файл у / etc / init з розширенням .conf. У файл покладіть:

start on started tty1

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

Я думаю, що це повинно запускати команду приблизно під час запуску терміналу, імовірно, приблизно в той же час, коли ви виконуєте команду.


Я вже намагався поставити це в сценарій запуску (rc.local), і це не допомогло. Крім того, оскільки це сервер Ubuntu, жодних терміналів після перезавантаження не може бути там, AFAIK.
BarsMonster

Я пропонував це як альтернативу методу rc.local. Можливо, це розпочнеться пізніше. Я насправді не знаю, хоча.
user1974

Щодо відсутності терміналів, то поняття не маю. Чому сервер не матиме ttys після запуску? Чи маємо на увазі те саме, що ми говоримо термінал? Незважаючи на те, ви можете скористатися іншою службою для запуску команди, просто змінітьtty1
user1974

0

Загальний знімок у темряві, оскільки у мене немає налаштування RAID 5 для тестування: Можливо, додайте рядок із

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

у rc.local, щоб видалити дозволи на запис після встановлення. Можливо, це не зупинить його на зміні в іншому місці?


Хороша ідея, але, схоже, щось закручено в процесі завантаження Ubuntu: -S Я спробую і опублікую сьогодні.
BarsMonster

Не допомогло: - |
BarsMonster

0

Додавати

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

до /etc/rc.local.


Подивіться на запитання - це перше, що я спробував, і це не спрацювало, мабуть, md-драйвер був ініціалізований або щось після виконання rc.local.
BarsMonster

-1

Ця сторінка говорить про те, що розмір смуги смуги (або ширина) повинен був бути встановлений під час встановлення fs. Може, tunefs можуть допомогти тут?


2
Зовсім інша річ. Розмір кешу смуги - це налаштування драйвера ядра MD в пам'яті для кешу смуг.
BarsMonster
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.