Stripe_cache_size öğesini kalıcı yapma


15

yaptım

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

RAID performansımı iyileştirmek için çok yardımcı oldu.

Ama hala nasıl kalıcı hale getirileceğini anlayamıyorum.

Ben /etc/rc.local - ayarlamak için çalışıyordu - diğer komutlar yürütülür, ancak başka bir yere 256 üzerine yazılmıştır ... Herhangi bir ipucu?


Aşağıdaki cevabımın yorumunu yeniden göndermek; StackExchange'in nasıl çalıştığından emin olmadığım için görüp görmediğinizden emin değilim: Hmmm ... RAID'im yok, bu yüzden biraz uzun bir çekim yapmayı deneyebilirsiniz, ancak 'grep -R 256 / etc / init.d 've' grep -R stripe_cache_size /etc/init.d '?
zpletan

1
Sysfsutils paketi sorununuzu çözmenize yardımcı olur mu?
zpletan

Yanıtlar:


16

Bir udev kuralı ekleyin, örneğin /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"

Aslında bunu denemedim, bu yüzden% 100 doğru olmayabilir (bazı yazım hataları olabilir), ancak yakın olmalıdır. Kontrol man udevdaha iyi anlamak için.

Yeni kuralı hemen uygulamak için daha sonra aşağıdaki komutları da çalıştırmak isteyebilirsiniz:

udevadm trigger
udevadm control --reload-rules

1
Çok teşekkür ederim, bu nihayet mükemmel bir çözüm :-) Sözdizimi tamam, sadece isimden önce 60- eklemek ve ramfs yenilemek zorunda kaldı.
BarsMonster

1
Teşekkürler. Bunun hala Ubuntu 13.10'da bir sorun olduğuna inanamıyorum. Sadece 10MB / sn'den çıktı ve şifrelenmiş bir RAID'den diğerine kopyalama yaparken, şerit önbellek boyutunu çok daha cömert bir değere değiştirerek tam 100MB / sn'ye çıkıyor.
frostschutz

Diğerleri için açıktır: en azından modern Ubuntu sistemlerinde (benim durumumda 17.04), muhtemelen diğerleri, bu yeni kuralı oluşturduktan sonra initramfs ("sudo update-initramfs -u") yeniden oluşturmanız gerekir veya aslında olmaz otomatik olarak yürürlüğe girer.
Bryan Henry

1

Sadece son gönderiyi genişletmek için; altındaki senaryo benim için çalışıyor. Bilgilerinizi "<...>" arasında değiştirin. Zevk almak!


#!/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
"Sadece son gönderiyi genişletmek için" demeyin, çünkü cevaplar genellikle oylara göre sıralanır, böylece cevabınız bahsettiğiniz yanıtın üzerinde görünebilir. Yazara yazarın adıyla bakın. Çok daha net.
Warren Hill

0

Ben de bunu anlamaya çalışıyorum. Benimkini rc.local'e koydum ve şansım yok. Oturum açtıktan sonra manuel olarak başlatıyorum. Sanırım bunu halletmek için bir komut dosyası yazabilir ve "Başlangıç ​​Uygulamalarınız" içine koyabilirsiniz ama gnome'da oturum açmadıysanız bu hiç yardımcı olmaz.


Ubuntu sunucusu, bu yüzden burada şans yok.
BarsMonster

0

Sysfsutils paketi sorununuzu çözmenize yardımcı olur mu?

ORİJİNAL CEVAP:

Sorunuza nasıl yorum yapacağınızı anlayamıyorum; Sanırım sorununuz hakkında daha fazla bilgi edindikçe bu yanıtı düzenleyeceğim.

Çıkışını gönderebilir misiniz (veya uzunsa macun)

grep -R md0 /etc/init.d

Orada hiçbir şey bulunamadı.
Barlar Canavar

Hmmm ... RAID'im yok, bu yüzden biraz uzun bir çekim, ama 'grep -R 256 /etc/init.d' ve 'grep -R stripe_cache_size /etc/init.d' 'yi deneyebilir misiniz?
zpletan

ikisi de sonuç vermedi.
BarsMonster

0

Sizin için gerçek bir cevabım yok, ama belki basit bir başlangıç ​​başlangıç ​​komut dosyası oluşturmayı deneyebilirsiniz. .Conf uzantılı / etc / init içinde bir dosya oluşturun. Put dosyasında:

start on started tty1

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

Benim düşüncem, komutun terminalin başlatıldığı zaman çalıştırılması gerektiğidir, bu da muhtemelen komutu çalıştırdığınız zaman civarındadır.


Zaten başlangıç ​​komut dosyasına (rc.local) koymaya çalıştım ve bu yardımcı olmadı. Ayrıca, bu Ubuntu Server olduğundan, AFAIK yeniden başlatıldıktan sonra hiçbir terminal bulunmayabilir.
BarsMonster

Bunu rc.local yöntemine alternatif olarak sunuyordum. Belki daha sonra başlar. Gerçekten bilmiyorum.
user1974

Terminal eksikliğine gelince, hiçbir fikrim yok. Neden bir sunucunun açılıştan sonra ttyleri olmasın? Terminal dediğimizde aynı şeyi mi kastediyoruz? Ne olursa olsun, komutu tetiklemek için farklı bir hizmet kullanabilirsiniz, sadece değiştirintty1
user1974

0

Karanlıkta toplam atış, test edeceğim bir RAID 5 kurulumuna sahip olmadığım için: Belki

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

ayarlandıktan sonra yazma izinlerini kaldırmak için rc.local dosyasında. Belki bu başka bir yerde değişmesini engelleyecektir?


İyi fikir, ama Ubuntu önyükleme sürecinde bir şey berbat gibi görünüyor: -S Bugün deneyeceğim ve göndereceğim.
BarsMonster

Yardımcı olmadı: - |
BarsMonster

0

ekleme

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

için /etc/rc.local.


Soruya bakın - bu denediğim ilk şey ve işe yaramadı, görünüşe göre md sürücüsü yeniden başlatıldı veya rc.local yürütüldükten sonra bir şey.
BarsMonster

-1

Bu sayfa , fs ayarlanırken şerit boyutunun (veya genişliğinin) ayarlanması gerektiğini gösterir. Belki tunikler burada yardımcı olabilir mi?


2
Tamamen farklı bir şey. Şerit önbellek boyutu, şerit önbellek için bellekte MD çekirdek sürücüsü için bir ayardır.
BarsMonster
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.