2010-06-30 6 views
19

मुझे नहीं लगता कि यह अभी तक मुझे स्पष्ट है, क्या यह फ़ाइल से या मेमकैड से चीजों को पढ़ने के लिए तेज़ है? क्यूं कर?कैशिंग, फाइल सिस्टम या मेमकैच के लिए कौन सा तेज़/बेहतर है?

+0

आपको अधिक विशिष्ट होना होगा, आप डेटा सेट क्या हैं और पेटीटेन्स तक पहुंच सकते हैं, क्या यह एक स्थानीय memchaced सर्वर या distibuted है? नेटवर्क पहुंच लागत क्या है? आपके द्वारा संग्रहीत जानकारी कितनी बड़ी है? आप किस डिस्क पर चल रहे हैं? –

+0

इस तरह के प्रश्न http://superuser.com/ –

+0

के लिए बेहतर उपयुक्त हैं, मुझे विवरण के बारे में बहुत कुछ पता नहीं है, मुझे मूलभूत शब्दों में लगता है: सरल सेटअप, सरल ऐप, 1 मेमकेचे सर्वर, 100 फाइलें ... –

उत्तर

23

मेमकैड तेज़ है, लेकिन स्मृति सीमित है। एचडीडी बहुत बड़ा है, लेकिन स्मृति की तुलना में I/O धीमा है। आपको मेमकैच, और सभी अन्यपर फ़ाइलों को कैश करने के लिए पर जा सकते हैं।
(या आदमी ऊपर और अधिक स्मृति में की तरह these guys :)

कुछ मानक के लिए कुछ पैसे निवेश देखें: Cache Performance Comparison (File, Memcached, Query Cache, APC)

सिद्धांत रूप में:

Read 1 MB sequentially from memory       250,000 ns 
Disk seek        10,000,000 ns 

http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf

+5

आपके द्वारा लिंक किए गए बेंचमार्क आपके कथन के सटीक विपरीत दिखाते हैं - कि स्थानीय डिस्क से पढ़ने से Memcached धीमा है। क्या आप विसंगतियों को स्पष्ट कर सकते हैं? – DOOManiac

0

आप विवरण पर भयानक तरीके से झुका रहे हैं। और मेरा मानना ​​है कि आपकी तलाश का उत्तर बैठने पर निर्भर करता है। मेरे ज्ञान के लिए बहुत कम चीजें हर समय की तुलना में बेहतर होती हैं।

स्पष्ट रूप से यह फ़ाइल सिस्टम की चीजों को पढ़ने के लिए तेज़ नहीं होगा (यह मानते हुए कि यह एक हार्डड्राइव है)। यहां तक ​​कि एक एसडीडी भी मेमोरी रीड की तुलना में धीमी गति से धीमा होगा। और इसका कारण यह है कि एचडीडी/फाइलसिस्टम क्षमता की गति के लिए बनाया गया है, जबकि उस कारण से डीडीआर मेमोरी कण जल्दी है।

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

11
वहाँ

हैं काफी कुछ अलग-अलग पहलू जो एक या दूसरे का पक्ष ले सकते हैं:

  • क्या आपको इस डेटा को एकाधिक सर्वरों के बीच साझा करना/चाहते हैं? फाइल सिस्टम स्थानीय है, नेटवर्क पर memcached का उपयोग किया जाता है।
  • आपके कैशिंग आइटम कितने बड़े हैं? बड़े सिस्टम के लिए फाइल सिस्टम बेहतर होने की संभावना है।
  • प्रति पेज कितने memcached अनुरोध हो सकता है? टीसीपी कनेक्शन और आंसू-डाउन स्थानीय मशीन पर एक साधारण फाइल सिस्टम स्टेट() से अधिक समय ले सकते हैं।

मैं सुझाव दूंगा कि आप अपने उपयोग के मामले को देखें और दोनों दृष्टिकोणों की कुछ प्रोफाइलिंग करें। यदि आप फाइल सिस्टम का उपयोग कर दूर हो सकते हैं तो मैं करूँगा। Memcached में जोड़ना जटिलता की एक और परत और विफलता के संभावित बिंदु (memcached क्लाइंट/सर्वर) में जोड़ता है।

डिस्क बनाम मेमोरी प्रदर्शन के बारे में अन्य टिप्पणियों के लायक होने के लिए यह अकादमिक हो सकता है जैसे फाइल सिस्टम डेटा नियमित रूप से एक्सेस किया जा रहा है, तो यह संभवतः ओएस या डिस्क कैश मेमोरी में बैठा होगा।

0

यह निर्भर करता है कि कैश स्थानीय रूप से संग्रहीत है या नहीं। Memcache एक नेटवर्क में डेटा स्टोर कर सकते हैं, जो एक स्थानीय डिस्क से जरूरी नहीं है।

0

वास्तव में, यह उतना आसान नहीं है जितना स्मृति से पढ़ना एचडीडी से पढ़ने से कहीं अधिक तेज़ है।जैसा कि आप जानते हैं, मेमकैच टीसीपी कनेक्शन पर आधारित है, यदि आप हर बार कनेक्शन बनाते हैं तो आप एसएचएच प्राप्त करना चाहते हैं या एसएचएच को मेमकैड सर्वर (जो प्रोग्रामर का अधिकांश है) पर सेट करते हैं, तो यह फ़ाइल कैश का उपयोग करने से खराब प्रदर्शन करता है। आपको स्थैतिक Memcached ऑब्जेक्ट का उपयोग करना चाहिए, और ऑब्जेक्ट का पुन: उपयोग करना चाहिए। दूसरा, आधुनिक ओएस की फ़ाइलों को कैश किया जाएगा जो अक्सर उपयोग किए जाते हैं, जो कि फ़ाइल कैश मेमकैच से तेज़ी से हो सकता है जो वास्तव में टीसीपी कनेक्शन हैं।

2

"तेज" संदर्भ के बिना उपयोग नहीं किया जा सकता है। उदाहरण के लिए, दूरस्थ सर्वर पर memcached में डेटा तक पहुंच नेटवर्क विलंबता के कारण "धीमी" हो सकती है। दूसरी तरफ, 10 जीबी नेटवर्क के माध्यम से रिमोट सर्वर मेमोरी से डेटा पढ़ने से स्थानीय डिस्क से उसी डेटा को पढ़ने से "तेज़" हो सकता है।

फाइल सिस्टम पर कैशिंग के बीच मुख्य अंतर और memcached का उपयोग करना यह है कि memcached एक पूर्ण कैशिंग समाधान है। तो एलआरयू सूचियां, समाप्ति अवधारणा (डेटा ताजगी), कुछ उच्च स्तरीय संचालन, जैसे कैस/इंक/डीसी/एपेंड/प्रीपेन्ड/प्रतिस्थापन है।

मेमकैड को तैनात करना और निगरानी करना आसान है (हम फाइल सिस्टम पर "कैश" वर्कलोड को कैसे अलग कर सकते हैं, चलिए कर्नेल कहते हैं? क्या हम कैश किए गए डेटा की कुल मात्रा की गणना कर सकते हैं? डेटा वितरण? क्षमता नियोजन? और इसी तरह)।

भी cachelot जैसे कुछ संकर प्रणाली, कर रहे हैं असल में, यह memcached कि सही आवेदन में एम्बेड किया जा सकता है, तो कैश किसी भी syscalls या नेटवर्क आईओ के बिना सुलभ हो जाएगा।

संबंधित मुद्दे