मेरा एसडी कार्ड धीमा क्यों है?


23

मेरा एसडी कार्ड धीमा चल रहा है। मेरे पास ADATA 16 GB SDHC क्लास 10 कार्ड है। मैंने संगतता सूची की जांच की जो समान विनिर्देशों वाले कार्ड को सूचीबद्ध करती है, और यह बताती है कि यह "काम" है। यहां तक ​​कि एक छोटे से निर्देशिका पर एक निर्देशिका लिस्टिंग प्राप्त करने जैसे सरल कार्यों को पहली बार अनुरोध करने में कुछ सेकंड लग सकते हैं। क्या कोई उपकरण है जो मैं यह सत्यापित करने के लिए उपयोग कर सकता हूं कि मैं अपने एसडी कार्ड से किस तरह का प्रदर्शन कर रहा हूं? इसके अलावा, क्या कोई कॉन्फ़िगरेशन परिवर्तन हैं जो मैं तेजी से प्रतिक्रिया देने के लिए एसडी कार्ड प्राप्त कर सकता हूं?

मैं एक बिना बिट बिटोरेंट सीडबॉक्स के रूप में रास्पबेरी पाई का उपयोग कर रहा हूं , इसलिए मैं जो भी सामान चला रहा हूं, वह सिर्फ कमांड लाइन पर चल रहा है। मैं यह सुनिश्चित करने के लिए 240/16 विभाजन का उपयोग कर रहा हूं कि मेरे पास अधिकतम स्मृति उपलब्ध है।

अपडेट

@Krzysztof Adamski के रूप में "dd" के साथ अनुशंसित कुछ परीक्षणों को चलाने के बाद, मुझे 20 एमबी / एस की रीड गति और लगभग 10 एमबी / एस की एक लेखन गति प्राप्त करने के लिए कुछ अच्छे परिणाम प्राप्त हुए। हालाँकि, यह अभी भी कुछ I / O गति मुद्दों के होने लगता है। परीक्षण करते समय, मैं पृष्ठभूमि में "dd" कमांड चलाता था, और ऊपर चला जाता था, यह देखने के लिए कि क्या चल रहा था। मैंने देखा कि "mmcqd" प्रक्रिया 5% से 10% के बीच प्रोसेसर के उपयोग का काफी हिस्सा ले रही थी। मैंने इंटरनेट पर चारों ओर देखा और लोगों के कई उदाहरणों की रिपोर्ट करते हुए पाया कि "mmcqd" काफी सीपीयू का उपयोग करता है। मैंने फिर उसी समय पढ़ने और लिखने का परीक्षण करने के लिए निम्न आदेश चलाए

sudo dd if=/dev/mmcblk0 of=test.dat bs=1M count=1024

इस कमांड को चलाते समय मुझे केवल 977 kB / s का थ्रूपुट मिला, और "mmcqd" ने प्रोसेसर का उपयोग 10% से 25% के बीच हर 5 से 10 सेकंड में किया, जिसके बाद यह कुछ भी नहीं वापस चला जाएगा। इसलिए, मैंने कुछ और परीक्षण किए। मैंने पृष्ठभूमि में निम्नलिखित दो कमांड चलाए, और फिर देखें कि शीर्ष में क्या हो रहा था।

sudo dd if=/dev/mmcblk0 of=/dev/null bs=1M count=1024 &
sudo dd if=/dev/zero of=test.dat bs=1M count=1024 &

इस मामले में "mmcqd" लगभग 35% प्रोसेसर का उपयोग करेगा, लेकिन पढ़ने के लिए लगभग 7.5 MB / s और लेखन के लिए 5.3 MB / s के आसपास थ्रूपुट बहुत बेहतर था।

ऐसा लगता है कि यहाँ किसी तरह की समस्या चल रही है जहाँ भारी लेखन "mmcqd" को सिस्टम को लॉक करने का कारण बनता है। यह ट्रांसमिशन-डेमन को लगभग शून्य तक धीमा कर देता है जैसे ही यह गति बहुत अधिक हो जाती है क्योंकि यह एसडी कार्ड की प्रतीक्षा करता है। ट्रांसमिशन-डेमॉन चलाते समय मुझे "mmcqd" का उपयोग बहुत अधिक लगता है।


क्या आप सुनिश्चित हैं कि एसडी कार्ड इस समस्या का कारण बनता है? क्या आप पहले सिस्टम के अन्य भागों को बाहर करने के लिए दूसरे कार्ड का उपयोग करने की कोशिश कर सकते हैं?
दाविद फेरेन्स्की रागोजान

क्या आपने mmc डिवाइस से संबंधित संदेशों के लिए syslog और कर्नेल लॉग की जाँच की है? कुछ कार्ड बस रास्पबेरी पाई में काम नहीं करते हैं। कुछ अन्य लोगों को मज़बूती से काम करने के लिए थोड़ा संभलकर चलने की आवश्यकता होती है।
Joppe


1
@ Ray023 धन्यवाद। मैंने लिंक अपडेट किया। भविष्य में, आप केवल प्रश्न को संपादित कर सकते हैं। मुझे लगता है कि आप नए होने के कारण, संपादन अभी नहीं लिया जाएगा, लेकिन अनुमोदन के लिए मूल पोस्टर या किसी अन्य उच्च प्रतिनिधि उपयोगकर्ता के लिए सहेजा जाएगा।
किब्बी

जवाबों:


21

परीक्षण कार्ड पढ़ने की गति:

पढ़ने की गति का परीक्षण करने के दो आसान तरीके हैं (लिस्टिंग निर्देशिका केवल एक रीड ऑपरेशन है):

  • dd कमांड का उपयोग करना:

    sudo dd if=/dev/mmcblk0 of=/dev/null bs=8M count=100

    यह आपके SD कार्ड से 800MB डेटा पढ़ेगा और इसे / dev / null पर छोड़ देगा। यदि इसमें अधिक समय लगता है, तो आप केवल 100MB पढ़ने के लिए count = 100 को count = 10 में बदल सकते हैं। कमांड समाप्त होने के बाद इसे रीड स्पीड के साथ एक संदेश प्रिंट करना चाहिए। आपको कम से कम युगल MB / s मिलना चाहिए।

  • hdparm कमांड का उपयोग करना:

    sudo hdparm -t /dev/mmcblk0

    यह आपको पहले कमांड के समान गति परिणाम दे सकता है और कम से कम एमबी / एस के कुछ जोड़े होने चाहिए।

परीक्षण कार्ड लिखने की गति:

लिखने की गति का परीक्षण करने का कोई आसान तरीका नहीं है क्योंकि ऐसा करने के लिए आपको वास्तव में कार्ड के लिए कुछ डेटा लिखना होगा। यदि आप निम्न स्तर (फाइलसिस्टम को छोड़ते हुए) पर ऐसा करना चाहते हैं, तो आपको कार्ड के कुछ डेटा को ओवरराइड करना होगा और आप शायद ऐसा नहीं करना चाहते। यह किया जा सकता है यदि आपके पास स्वैप विभाजन है क्योंकि इसे आसानी से निष्क्रिय किया जा सकता है ( swapoff -a) के साथ , dd (के साथ dd if=/dev/zero of=/dev/{yourswappartitionnanehare} bs=8M count=25) और फिर (साथ mkswap /dev/{yourswappartitionnanehare}) फिर से बनाया गया है ।

यदि आपके पास स्वैप विभाजन नहीं है, तो आप dd कमांड का उपयोग करके फाइलसिस्टम लिखने की गति का भी परीक्षण कर सकते हैं:

dd if = / dev / zero of = / home / pi / testfile bs = 8M count = 25

इसमें 200MB फ़ाइल बनाई जाएगी /home/pi/testfile। आप किसी अन्य फ़ाइलनाम का उपयोग कर सकते हैं जिसे आप चाहते हैं।

टिप्पणियाँ:

  • गति का परीक्षण करते समय, सुनिश्चित करें कि आपके सिस्टम में कोई अन्य प्रोग्राम नहीं चल रहे हैं (जैसे टोरेंट एप्लिकेशन आदि)।
  • परीक्षण के बाद, आप यह देखने के लिए dmesgकमांड के आउटपुट की जांच कर सकते हैं कि क्या mmc सबसिस्टम के बारे में कोई संदेश हैं।
  • सुनिश्चित करें कि आपके पास अधिकांश फर्मवेयर स्थापित हैं। समय-समय पर एसडी कार्ड की गति की परवाह किए बिना पैच होते हैं।
  • आप कुछ पुराने फ़र्मवारों की जाँच करना भी चाह सकते हैं क्योंकि कुछ प्रतिगमन हो सकते हैं। ऐसा करने का सबसे आसान तरीका (लेकिन सबसे अच्छा नहीं) विभिन्न सिस्टम छवियों का परीक्षण करना है जहां विभिन्न तिथियों पर निर्माण होता है। कठिन तरीका यह है कि फर्मवेयर फ़ाइलों के गिथब और चेकआउट ऐतिहासिक संस्करणों का उपयोग किया जाए।

मेरी तारीफ। एक मैकबुक एयर पर मुझे 1.4 एमबी / सेकंड मिला जब एक आईएमजी फ़ाइल को कक्षा 6 4 जीबी एसडी कार्ड पर लिखना था। PI पर एक रीड टेस्ट ने 20 एमबी / सेकंड की सूचना दी!
स्कॉलरब्लस्टर

मेरे पास भी ठीक यही चीज है। मेरी पढ़ने की गति 500MB / सेकंड की तरह कुछ है। क्या मैं कुछ गलत हूं?
सबसे गहरा N2O

12

एसडी कार्ड प्रदर्शन के लिए यह बहुत मायने रखता है कि क्या पहुंच अनुक्रमिक है (dd के साथ) या छोटे ब्लॉकों में यादृच्छिक अभिगम। एसडी कार्ड, विशेष रूप से उच्च श्रेणी के लोग अनुक्रमिक पहुंच के लिए अनुकूलित किए गए लगते हैं, जो तस्वीरों या वीडियो को संग्रहीत करने के लिए अच्छा है। हालांकि, एसडी कार्ड के ओएस को चलाने के लिए रैंडम एक्सेस अधिक महत्वपूर्ण है, क्योंकि बहुत सारी छोटी फाइलें पढ़ी और लिखी जाती हैं। मुझे लगता है कि बिटकॉइन कुछ बेतरतीब एक्सेसरीज़ के साथ-साथ उत्पन्न करता है।

इन दो चर्चा सूत्र में बहुत सारे एसडी कार्ड बेंचमार्क और चर्चाएँ हैं। सामान्य तौर पर, कार्ड की ओएस चलाने की जवाबदेही के लिए यादृच्छिक लेखन गति निर्णायक पाई गई। यह गति अनुक्रमिक लिखने की गति की तुलना में अक्सर कम होती है, जो कि निर्माताओं को रिपोर्ट करने के लिए गति की तरह है। एसडी कार्ड क्लास अनुक्रमिक गति पर आधारित है, और निचले वर्ग (4 या 6) वास्तव में रास्पबेरी के उपयोग के लिए अधिक अनुकूल हो सकते हैं।

Iozone उपकरण कई अलग अलग पहुँच पैटर्न की गति को मापता है। मैंने यहां रास्पबेरी पर iozone संकलित करने के लिए संक्षिप्त निर्देश पोस्ट किए हैं


2
दिलचस्प जवाब। अच्छा है।
जीवांश

बहुत दिलचस्प के रूप में मैं सिर्फ 4x कक्षा 10 खरीदा ... खतरा! :-(
बेरग्रीनडीके

@ बर्गग्रीनडीके : हो सकता है कि भविष्य में आप अच्छी तरह से एक अलग उद्देश्य के लिए कार्ड का उपयोग करें और फिर शायद आप खुश होंगे कि आपने 10 कार्ड खरीदे।
नेवरलैंड

1
बूट लेखन या निर्देशिका लिस्टिंग जैसे विशिष्ट कार्यों में यादृच्छिक लेखन की गति का बहुत कम प्रभाव होना चाहिए। यहां तक ​​कि टॉरेंट के लिए, 4KB लिखने के साथ परीक्षण के परिणाम अप्रासंगिक हैं: ठेठ चंक आकार 1 एमबी के आसपास हैं, और जब तक आपके पास कोई मुफ्त रैम नहीं है, तब तक डिस्क कैश इनको और भी बड़े अनुक्रमिक लेखन में समूहित करेगा।
दिमित्री ग्रिगोरीव

0

RasPI ऑनबोर्ड स्लॉट के लिए RasPI साइट पर एक बड़ी चर्चा है: http://www.raspberrypi.org/phpBB3/viewtopic.php?f=63&t=5057&sid=ee346b3e7cea48d2858a143bcf086362

चर्चा के 12 पृष्ठों के माध्यम से सभी को पढ़ने का समय नहीं मिला, लेकिन यह सीएलके संकेत के साथ एक समस्या है।


0

आप "बिटटोरेंट" लिखते हैं और जो मेरे अनुमान / उत्तर को ट्रिगर करता है।

टॉरेंट प्रोटोकॉल यादृच्छिक क्रम से यादृच्छिक क्रम में संकुल प्राप्त करता है।

एक बार जब आप किसी फाइलसिस्टम पर टोरेंट का उपयोग करना शुरू कर देते हैं, तो यह खंडित हो जाता है। इससे प्रदर्शन में बड़ी गिरावट आएगी।

मैं SDCARD के बारे में जो कुछ जानता हूं, उसके विखंडन से निपटने के लिए उसके चलने वाले FAT / FAT32 और उससे भी बदतर हैं।

तो अपने SDCARD को डीफ़्रैग्मेन्ट करने का एक तरीका ढूंढें, या सभी फ़ाइलों को इससे दूर रखें और फिर OS को पुनर्स्थापित करें।

अंत में, एक LOT (बिटटोरेंट इंजन के रूप में) लिखना आपके SDCARD को सामान्य उपयोग की तुलना में अधिक तेज़ी से फाड़ देगा। मैं नहीं कहता कि यह गलत है ऐसा करने के लिए, मैं अपने आप को इसी तरह माना जाता था। लेकिन - यह आपकी समस्या का कारण हो सकता है।

काश कोई टोरेंट क्लाइंट होता जो डाउनलोड + "आरक्षित अपलोड समय" पूरा हो जाने पर स्वचालित रूप से डाउनलोड की गई फ़ाइलों को एक दूसरे गंतव्य पर स्थानांतरित / स्थानांतरित कर देता।

फिर डीफ़्रैग्मेन्टिंग बहुत तेज़ हो जाएगी।


विखंडन SD कार्ड पर कैसे लागू होता है? मुझे लगा कि विखंडन केवल कताई डिस्क पर एक समस्या है, क्योंकि फ़ाइल गैर-अनुक्रमिक क्षेत्रों पर स्थित होगी, जिससे रीड / राइट हेड को फ़ाइल तक पहुंचने के लिए सभी जगह जाना होगा। एसडी कार्ड जैसे ठोस राज्य भंडारण पर, यह एक गैर-मुद्दा है। हालाँकि, मैं आपके द्वारा बिटकॉइन के कारण लिखी गई कार्रवाइयों की संख्या के बारे में सहमत हूँ। मुझे लगता है कि समस्या के साथ बहुत कुछ करना है। संयोजन करें कि आरपीआई (मेरा में 256 एमबी है) पर थोड़ी मात्रा में मेमोरी है और यह धीमी डिस्क एक्सेस के लिए एक नुस्खा लगता है। साथ ही एसडी कार्ड सामान्य रूप से धीमे होते हैं।
कबि

ठीक है, FAT / FAT32 संरचना खराब और धीमी है एक बार जब आप फ़ाइलों के कई टुकड़े करना शुरू करते हैं। और छोटे रास्पबेरी के साथ घूमने के लिए बहुत अधिक शक्ति नहीं है। तो इसके रास्ते में जो भी चीज आती है, उसे धीमा कर देती है। लेकिन फिर, यह सिर्फ मेरा अनुमान है। मेरे पास इस पर कोई तथ्य नहीं है।
BerggreenDK

1
RPI FAT / FAT32 का उपयोग भी नहीं करता है। फ़ाइल सिस्टम EXT4 है।
किबी

3
उत्तर में एक अच्छा बिंदु है कि बिटोरेंट शायद छोटे टुकड़ों में फाइलों को यादृच्छिक क्रम में डेटा लिखता है। एसडी कार्ड पर इस प्रकार का यादृच्छिक लेखन बहुत अक्षम है। लेकिन मुझे नहीं लगता कि डीफ़्रैग्मेन्ट करने से मदद मिलेगी। दरअसल, एफएटी का उपयोग पाई पर किया जाता है, लेकिन केवल बूट विभाजन के लिए।
फ्रीपा

1
@ तिब्बती: raspberrypi.stackexchange.com/questions/8850/… पर मेरा जवाब देखें कि यह समझने के लिए कि एसडी कार्ड के अपने स्वयं के विखंडन मुद्दे क्यों हैं। कई सॉफ्टवेयर तकनीकें, जो भौतिक डिस्क विखंडन (जैसे कि पूर्व-आवंटित फाइलें) से बचती हैं, एसडी कार्ड के साथ बेकार होती हैं, क्योंकि जब उन्हें आवंटित किया जाता है, तो डेटा को उनके द्वारा लिखे जाने के बजाय सेक्टरों को रखा जाता है (या स्थानांतरित किया जाता है)।
सुपरकैट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.