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?


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

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

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.


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

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.


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?


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.


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?


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.