Uczynienie paska stripe_cache_size trwałym

15

Zrobiłem

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

aby poprawić moją wydajność RAID, i to bardzo pomogło.

Ale wciąż nie mogę wymyślić, jak zrobić to na stałe.

Próbowałem ustawić go w /etc/rc.local - inne polecenia są wykonywane, ale zostały zastąpione w 256 gdzie indziej ... Jakieś wskazówki?

BarsMonster
źródło
Przesłanie komentarza do mojej odpowiedzi poniżej; Nie jestem pewien, czy to widziałeś, czy nie, ponieważ nie jestem pewien, jak działa StackExchange: Hmmm ... Nie mam RAID, więc to trochę długa szansa, ale możesz spróbować 'grep -R 256 / etc / init.d ”i„ grep -R stripe_cache_size /etc/init.d ”?
zpletan 15.01.11
1
Czy pakiet sysfsutils pomoże rozwiązać problem?
zpletan

Odpowiedzi:

16

Dodaj regułę udev, np. Do /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"

Tak naprawdę nie próbowałem tego, więc może nie być w 100% poprawne (mogą być literówki), ale powinno być blisko. Sprawdź, man udevaby zrozumieć więcej.

Możesz także później uruchomić następujące polecenia, aby natychmiast zastosować nową regułę:

udevadm trigger
udevadm control --reload-rules
NeilBrown
źródło
1
Dziękuję bardzo, to jest w końcu idealne rozwiązanie :-) Składnia jest w porządku, po prostu musiałem dodać 60- przed nazwą i zregenerować ramfs.
BarsMonster,
1
Dzięki. Nie mogę uwierzyć, że wciąż jest to problem w Ubuntu 13.10. Właśnie przeszedłem z <10 MB / si zakończono zawieszanie do> 100 MB / s podczas kopiowania z jednego zaszyfrowanego RAID na inny, po prostu zmieniając rozmiar pamięci podręcznej pasków na znacznie bardziej hojną wartość.
frostschutz
Dla innych jest to jasne: przynajmniej na nowoczesnych systemach Ubuntu (w moim przypadku 17.04), ewentualnie na innych, musisz odbudować swój initramfs („sudo update-initramfs -u”) po utworzeniu tej nowej reguły, inaczej nie będzie działają automatycznie.
Bryan Henry,
1

Po prostu rozwinąć ostatni post; skrypt poniżej działa dla mnie. Wystarczy zamienić swoje dane pomiędzy „<...>”. Cieszyć się!


#!/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
DanglingPointer
źródło
3
Nie mów „Po prostu rozwinąć ostatni post”, ponieważ odpowiedzi zazwyczaj są uszeregowane według głosów, więc możliwe, że Twoja odpowiedź może pojawić się powyżej tej, o której mówisz. Odwołaj się do postu według nazwiska autorów. To jest o wiele wyraźniejsze.
Warren Hill,
0

Próbuję to rozgryźć. Umieściłem mój w rc. Lokalnie i bez powodzenia. Uruchamiam go ręcznie po zalogowaniu. Przypuszczam, że mógłbyś napisać skrypt, który by to obsługiwał i umieścił go w „Zasadach uruchamiania”, ale to wcale nie pomaga, jeśli nie jesteś zalogowany do GNOME.


źródło
To serwer Ubuntu, więc nie ma tu szczęścia.
BarsMonster,
0

Czy pakiet sysfsutils pomoże rozwiązać problem?

ORYGINALNA ODPOWIEDŹ:

Nie mogę wymyślić, jak skomentować twoje pytanie; Myślę, że zredaguję tę odpowiedź, gdy dowiem się więcej o twoim problemie.

Czy możesz opublikować (lub wkleić, jeśli jest długi) wynik

grep -R md0 /etc/init.d
zpletan
źródło
Nic tam nie znaleziono.
BarsMonster,
Hmmm ... Nie mam RAID, więc to trochę długa szansa, ale czy możesz spróbować „grep -R 256 /etc/init.d” i „grep -R stripe_cache_size /etc/init.d”?
zpletan
oba nie zwróciły żadnych wyników.
BarsMonster,
0

Nie mam dla ciebie prawdziwej odpowiedzi, ale może możesz spróbować stworzyć prosty skrypt startowy. Utwórz plik w / etc / init z rozszerzeniem .conf. W pliku umieść:

start on started tty1

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

Myślę, że powinno to uruchomić polecenie w czasie, gdy terminal został uruchomiony, czyli prawdopodobnie w tym samym czasie, gdy uruchamiasz polecenie.

użytkownik1974
źródło
Próbowałem już umieścić to w skrypcie startowym (rc.local) i to nie pomogło. Ponieważ jest to serwer Ubuntu, po ponownym uruchomieniu komputera mogą nie być żadnych terminali, AFAIK.
BarsMonster,
Zaproponowałem to jako alternatywę dla metody rc.local. Może zacznie się później. Ale tak naprawdę nie wiem.
user1974,
Jeśli chodzi o brak terminali, nie mam pojęcia. Dlaczego serwer nie miałby tty po uruchomieniu? Czy mamy na myśli to samo, gdy mówimy terminal? Niezależnie od tego, możesz użyć innej usługi do uruchomienia polecenia, po prostu zmieńtty1
1974
0

Całkowity strzał w ciemność, ponieważ nie mam konfiguracji RAID 5 do przetestowania: Może dodaj linię

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

w rc.local, aby usunąć uprawnienia do zapisu po ustawieniu. Może to powstrzyma go przed zmianą gdzie indziej?

Ramón
źródło
Dobry pomysł, ale wygląda na to, że coś się popsuło podczas uruchamiania systemu Ubuntu: -S Spróbuję opublikować dzisiaj.
BarsMonster,
Nie pomógł: - |
BarsMonster,
0

Dodać

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

do /etc/rc.local.

Thermionix
źródło
Zobacz pytanie - jest to pierwsza rzecz, której próbowałem i nie zadziałało, najwyraźniej md-driver został ponownie zainicjowany lub coś po wykonaniu rc.local.
BarsMonster,
-1

Ta strona sugeruje, że rozmiar paska (lub szerokość) powinien zostać ustawiony, gdy skonfigurowano fs. Może tunefs może tu pomóc?

TGM
źródło
2
To zupełnie inna sprawa. Rozmiar pamięci podręcznej pasków to ustawienie sterownika jądra MD w pamięci dla pamięci podręcznej pasków.
BarsMonster,