Membuat stripe_cache_size permanen

15

aku melakukannya

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

untuk meningkatkan kinerja RAID saya, dan itu banyak membantu.

Tapi saya masih tidak tahu bagaimana membuatnya permanen.

Saya mencoba untuk mengaturnya di /etc/rc.local - perintah lain dijalankan, tetapi ditimpa ke 256 di tempat lain ... Ada petunjuk?

BarsMonster
sumber
Reposting komentar dari jawaban saya di bawah ini; Saya tidak yakin apakah Anda melihatnya atau tidak karena saya tidak yakin bagaimana cara kerja StackExchange: Hmmm ... Saya tidak punya RAID, jadi agak sulit, tetapi bisakah Anda mencoba 'grep -R 256 / etc / init.d 'dan' grep -R stripe_cache_size /etc/init.d '?
zpletan
1
Apakah paket sysfsutils membantu memperbaiki masalah Anda?
zpletan

Jawaban:

16

Tambahkan aturan udev, misalnya ke /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"

Saya belum benar-benar mencoba ini jadi mungkin tidak 100% benar (mungkin salah ketik), tetapi harus dekat. Periksa man udevuntuk memahami lebih lanjut.

Anda mungkin juga ingin menjalankan perintah berikut setelahnya untuk segera menerapkan aturan baru:

udevadm trigger
udevadm control --reload-rules
NeilBrown
sumber
1
Terima kasih banyak, ini akhirnya solusi yang sempurna :-) Sintaks ok, saya hanya perlu menambahkan 60- sebelum nama, dan membuat ulang ramfs.
BarsMonster
1
Terima kasih. Saya tidak percaya ini masih menjadi masalah di Ubuntu 13.10. Hanya beralih dari <10MB / s dan menyelesaikan hang ke> 100MB / s sambil menyalin dari satu RAID terenkripsi ke yang lain, hanya dengan mengubah ukuran cache stripe ke nilai yang jauh lebih murah hati.
frostschutz
Jadi jelas bagi orang lain: setidaknya pada sistem Ubuntu modern (17,04 dalam kasus saya), mungkin yang lain, Anda perlu membangun kembali initramfs Anda ("sudo update-initramfs -u") setelah membuat aturan baru ini atau tidak akan benar-benar berlaku secara otomatis.
Bryan Henry
1

Hanya untuk memperluas pada posting terakhir; skrip di bawahnya berfungsi untuk saya. Cukup tukar informasi Anda di antara "<...>". Nikmati!


#!/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
sumber
3
Jangan katakan "Hanya perluas pada posting terakhir" karena jawaban biasanya mendapat peringkat berdasarkan suara sehingga kemungkinan jawaban Anda bisa muncul di atas yang Anda maksud. Lihat posting dengan nama penulis. Jauh lebih jelas.
Warren Hill
0

Saya juga mencoba mencari tahu ini. Saya menempatkan milik saya di rc.local dan tidak berhasil. Saya memulai secara manual setelah masuk. Saya kira Anda bisa menulis skrip untuk menangani ini dan memasukkannya ke "Startup Applictions" Anda, tetapi itu tidak membantu sama sekali jika Anda tidak masuk ke gnome.


sumber
Ini server ubuntu, jadi tidak beruntung di sini.
BarsMonster
0

Apakah paket sysfsutils membantu memperbaiki masalah Anda?

JAWABAN ASLI:

Saya tidak tahu cara mengomentari pertanyaan Anda; Saya kira saya akan mengedit jawaban ini karena saya belajar lebih banyak tentang masalah Anda.

Bisakah Anda memposting (atau pastebin, jika panjang) output dari

grep -R md0 /etc/init.d
zpletan
sumber
Tidak ada yang ditemukan di sana.
BarsMonster
Hmmm ... Saya tidak punya RAID, jadi agak sulit, tetapi bisakah Anda mencoba 'grep -R 256 /etc/init.d' dan 'grep -R stripe_cache_size /etc/init.d'?
zpletan
keduanya tidak membuahkan hasil.
BarsMonster
0

Saya tidak punya jawaban nyata untuk Anda, tetapi mungkin Anda bisa mencoba membuat skrip startup pemula yang sederhana. Buat file di / etc / init dengan ekstensi .conf. Dalam file put:

start on started tty1

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

Pemikiran saya adalah bahwa itu harus menjalankan perintah sekitar waktu terminal telah dimulai, yang mungkin sekitar waktu yang sama Anda menjalankan perintah.

pengguna1974
sumber
Saya sudah mencoba meletakkan ini di skrip startup (rc.local) dan ini tidak membantu. Juga, karena ini adalah Server Ubuntu, tidak ada terminal yang mungkin ada setelah reboot, AFAIK.
BarsMonster
Saya mengusulkan ini sebagai alternatif untuk metode rc.local. Mungkin akan mulai nanti. Saya tidak begitu tahu.
user1974
Adapun kurangnya terminal, saya tidak tahu. Mengapa server tidak memiliki ttys setelah startup? Apakah kita bermaksud hal yang sama ketika kita mengatakan terminal? Apapun, Anda dapat menggunakan layanan yang berbeda untuk memicu perintah, cukup ubahtty1
user1974
0

Tembakan total dalam gelap karena saya tidak memiliki setup RAID 5 untuk diuji dengan: Mungkin menambahkan baris dengan

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

di rc.local untuk menghapus izin menulis setelah ditetapkan. Mungkin itu akan menghentikannya dari berubah di tempat lain?

Ramon
sumber
Ide bagus, tetapi sepertinya ada sesuatu yang kacau dalam proses boot Ubuntu: -S Saya akan coba dan posting hari ini.
BarsMonster
Tidak membantu: - |
BarsMonster
0

Menambahkan

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

untuk /etc/rc.local.

Thermionix
sumber
Lihat pertanyaan - ini adalah hal pertama yang saya coba, dan tidak berhasil, rupanya driver md diinisialisasi ulang atau sesuatu setelah rc.local dieksekusi.
BarsMonster
-1

Halaman ini menunjukkan bahwa ukuran garis (atau lebar) seharusnya sudah diatur ketika fs diatur. Mungkin tunef dapat membantu di sini?

TGM
sumber
2
Itu hal yang sama sekali berbeda. Ukuran cache stripe adalah pengaturan untuk driver kernel MD pada memori untuk cache strip.
BarsMonster