स्ट्राइप_कैश_साइज़ को स्थायी बनाना


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 पैकेज आपकी समस्या को ठीक करने में मदद करेगा?
12

जवाबों:


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 में एक समस्या है। बस <10MB / s से चला गया और एक एन्क्रिप्टेड RAID से दूसरे में कॉपी करते हुए> 100MB / s तक लटका हुआ है, बस स्ट्राइप कैश आकार को बहुत अधिक उदार मूल्य में बदलकर।
फ्रॉस्टचुट्ज़

बस इतना दूसरों के लिए स्पष्ट है: कम से कम आधुनिक उबंटू सिस्टम (मेरे मामले में 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
"बस अंतिम पोस्ट पर विस्तार करने के लिए" मत कहो क्योंकि उत्तर आमतौर पर वोटों से रैंक करते हैं, इसलिए इसका संभव है कि आपका उत्तर उस व्यक्ति के ऊपर दिखाई दे सकता है जिसे आप संदर्भित कर रहे हैं। लेखकों के नाम से पोस्ट देखें। यह बहुत स्पष्ट है।
वॉरेन हिल

0

मैं यह भी पता लगाने की कोशिश कर रहा हूं। मैं r rllocal और कोई भाग्य में मेरा डाल दिया। मैं लॉग इन करने के बाद इसे मैन्युअल रूप से शुरू करता हूं। मुझे लगता है कि आप इसे संभालने के लिए एक स्क्रिप्ट लिख सकते हैं और इसे अपने "स्टार्टअप अप्पेरियन्स" में डाल सकते हैं, लेकिन यह बिल्कुल भी मदद नहीं करता है यदि आप गनोम में लॉग इन नहीं हैं।


यह ubuntu सर्वर है, इसलिए यहाँ कोई किस्मत नहीं है।
बार्समोनस्टर

0

क्या आपकी समस्या को ठीक करने में sysfsutils पैकेज मदद करेगा?

मूल ANSWER:

मैं यह पता नहीं लगा सकता कि आपके प्रश्न पर टिप्पणी कैसे की जाए; मुझे लगता है कि मैं इस उत्तर को संपादित करूंगा क्योंकि मैं आपकी समस्या के बारे में अधिक जानता हूं।

क्या आप पोस्ट (या पास्टबिन, यदि यह लंबा है) का आउटपुट पोस्ट कर सकते हैं

grep -R md0 /etc/init.d

वहां कुछ नहीं मिला।
BarsMonster

हम्म् ... मेरे पास RAID नहीं है, इसलिए यह एक लंबे शॉट की तरह है, लेकिन क्या आप 'grep -R 256 /etc/init.d' और 'grep -R stripe_cache_size /etc/init.d' कोशिश कर सकते हैं?
ज़प्लेन

दोनों ने कोई नतीजा नहीं दिया।
BarsMonster

0

मेरे पास आपके लिए एक वास्तविक उत्तर नहीं है, लेकिन शायद आप एक सरल अपस्टार्ट स्टार्टअप स्क्रिप्ट बनाने का प्रयास कर सकते हैं। .Conf एक्सटेंशन के साथ / etc / init में एक फ़ाइल बनाएँ। फ़ाइल पुट में:

start on started tty1

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

मेरी सोच यह है कि टर्मिनल शुरू होने के समय के आसपास कमांड चलाना चाहिए, जो संभवत: उसी समय के आसपास है जब आप कमांड चला रहे हैं।


मैंने पहले ही इसे स्टार्टअप स्क्रिप्ट (rc.local) में डालने की कोशिश की है और इसने मदद नहीं की। इसके अलावा, जैसा कि यह उबंटू सर्वर है, रिबूट, AFAIK के बाद कोई भी टर्मिनल नहीं हो सकता है।
बार्समोनस्टर

मैं इसे r.local विधि के विकल्प के रूप में प्रस्तावित कर रहा था। शायद यह बाद में शुरू होगा। मैं वास्तव में हालांकि पता नहीं है।
user1974

टर्मिनलों की कमी के लिए, मेरे पास कोई विचार नहीं है। स्टार्टअप के बाद सर्वर में टिट्स क्यों नहीं होंगे? जब हम टर्मिनल कहते हैं तो क्या हमारा वही मतलब है? भले ही, आप कमांड को ट्रिगर करने के लिए एक अलग सेवा का उपयोग कर सकते हैं, बस बदल सकते हैंtty1
user1974

0

अंधेरे में कुल शॉट जैसा कि मेरे पास परीक्षण करने के लिए RAID 5 सेटअप नहीं है: शायद के साथ एक पंक्ति जोड़ें

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

rc.local में सेट करने के बाद लिखने की अनुमति को हटाने के लिए। शायद जो इसे कहीं और बदलने से रोक देगा?


अच्छा विचार है, लेकिन ऐसा लगता है कि कुछ उबंटू बूट प्रक्रिया में खराब हो गया है: -S मैं कोशिश करूँगा और आज पोस्ट करूँगा।
बार्समोनस्टर

मदद नहीं की: - |
BarsMonster

0

संलग्न

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

को /etc/rc.local


प्रश्न देखें - यह पहली चीज है जो मैंने कोशिश की है, और यह काम नहीं किया है, जाहिरा तौर पर एमडी-चालक को पुन: व्यवस्थित किया गया था या rc.local निष्पादित होने के बाद कुछ किया गया था।
BarsMonster

-1

यह पन्ना बताता है कि जब एफएस स्थापित किया गया था, तो स्ट्राइप आकार (या चौड़ाई) स्थापित किया जाना चाहिए था। शायद धुन यहाँ मदद कर सकता है?


2
यह बिलकुल अलग बात है। स्ट्रिप कैश का आकार धारियों के कैश के लिए मेमोरी पर एमडी कर्नेल ड्राइवर के लिए एक सेटिंग है।
बार्समोनस्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.