क्या नेटवर्क अब डिस्क से अधिक तेज हैं?


126

यह एक सॉफ्टवेयर डिजाइन प्रश्न है

मैं गति के लिए निम्नलिखित नियम पर काम करता था

cache memory > memory > disk > network

प्रत्येक चरण के साथ पिछले चरण 5-10 गुना (उदाहरण के लिए कैश मेमोरी मुख्य मेमोरी से 10 गुना तेज) है।

अब, ऐसा लगता है कि गीगाबिट ईथरनेट में स्थानीय डिस्क से कम विलंबता है। तो, शायद बड़े रिमोट इन-मेमोरी डीबी से बाहर पढ़ने के लिए ऑपरेशन स्थानीय डिस्क रीड्स की तुलना में तेज़ हैं। यह मेरे जैसे पुराने टाइमर को विधर्मी की तरह लगता है। (मैंने नेटवर्क राउंड ट्रिप करने से बचने के लिए डिस्क पर लोकल कैश बनाने में कुछ समय बिताया - इसलिए मेरा सवाल है)

क्या किसी को इस क्षेत्र में कोई अनुभव / संख्या / सलाह है?

और हां मुझे पता है कि इसका पता लगाने का एकमात्र वास्तविक तरीका निर्माण और माप है, लेकिन मैं सामान्य नियम के बारे में सोच रहा था।

संपादित करें :

यह शीर्ष उत्तर का दिलचस्प डेटा है:

  • समान डेटासेंटर 500,000 एनएस के भीतर गोल यात्रा

  • डिस्क की तलाश 10,000,000 एन.एस.

यह मेरे लिए झटका है; मेरा मानसिक मॉडल यह है कि एक नेटवर्क राउंड ट्रिप स्वाभाविक रूप से धीमा है। और इसकी नहीं - इसकी डिस्क 'राउंड ट्रिप' से 10 गुना तेज है।

जेफ एटवुड ने इस अच्छे ब्लॉग को http://blog.codinghorror.com/the-infinite-space-between-words/ पर पोस्ट किया


11
कभी हाँ, कभी नहीं। क्या नेटवर्क? क्या डिस्क?
जॉन गार्डनियर्स

1
शीर्ष उत्तर से अन्य दिलचस्प डेटा: नेटवर्क बनाम डिस्क से 1 एमबी अनुक्रमिक पढ़ा। मुझे लगता है कि "राउंड ट्रिप" समय किसी भी महत्वपूर्ण डेटा ट्रांसफर को छोड़ देता है।
पॉल

पॉल: आपके एमटीयू पर निर्भर करता है, मुझे यकीन है। (1 एमबी एमटीयू! बहुत बढ़िया!)
मैट सिमंस

मैं 10Gbps नेटवर्क गियर के प्रकाश में व्यापक रूप से उपलब्ध होने के कारण इनमें से कुछ उत्तरों को देखना पसंद करूंगा।
चूजों

गिगाबिट नेटवर्क बनाम छापे 5?
सोइल्सीग्यु जुले

जवाबों:


137

यहाँ कुछ संख्याएँ हैं जो आप शायद देख रहे हैं, जैसा कि जेफ़ डीन, एक Google साथी ने उद्धृत किया है:

नंबर सभी को पता होना चाहिए

L1 cache reference                             0.5 ns
Branch mispredict                              5 ns
L2 cache reference                             7 ns
Mutex lock/unlock                            100 ns (25)
Main memory reference                        100 ns
Compress 1K bytes with Zippy              10,000 ns (3,000)
Send 2K bytes over 1 Gbps network         20,000 ns
Read 1 MB sequentially from memory       250,000 ns
Round trip within same datacenter        500,000 ns
Disk seek                             10,000,000 ns
Read 1 MB sequentially from network   10,000,000 ns
Read 1 MB sequentially from disk      30,000,000 ns (20,000,000)
Send packet CA->Netherlands->CA      150,000,000 ns

बिल्डिंग प्रेजेंटेड डिस्ट्रिब्यूटेड सिस्टम्स के डिजाइन, पाठ और सलाह शीर्षक से यह आपकी प्रस्तुति से है और आप इसे यहां प्राप्त कर सकते हैं:

यह बात लार्ज-स्केल डिस्ट्रिब्यूटेड सिस्टम्स और मिडलवेयर (LADIS) 2009 में दी गई थी ।

अन्य सूचना


यह कहा जाता है कि gcc -O4 आपके कोड को जेफ डीन को एक फिर से लिखने के लिए ईमेल करता है।



+1 बहुत दिलचस्प!
9

1
कुछ प्रस्तुतियों में कोष्ठक में इंगित भिन्न मूल्य हैं। मुझे लगता है कि ब्रैकेट में कोई भी गलत था और उसने मूल्यों को अपडेट किया।
डेविड डी सी ई फ्रीटास

1
क्या यह सब पूर्व-एसएसडी युग है? आगे की तारीखों के लिए यहां देखें ।
मैट

मैंने वास्तव में इन नंबरों का उपयोग एक प्रस्तुति का निर्माण करने के लिए किया था , जिसमें दिखाया गया था कि एसएसडी ड्राइव अपने लिए भुगतान करते हैं , अपने कार्यालय प्रबंधक को यह समझाने के लिए कि हां हमें काम करने के लिए तेज मशीनों की आवश्यकता है। तकनीकी जानकारी के लिए संख्याओं को शामिल करें लेकिन इसे गैर-तकनीकी प्रबंधन के लिए अधिक से अधिक सक्षम करें।
ब्रिचिंस

19

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

SATA 3.0 और SAS बसें 6 Gbps, एक नेटवर्क 1Gbps माइनस प्रोटोकॉल ओवरहेड हैं। RAID-10 15k SAS के साथ, नेटवर्क कुत्ते को धीमा लगता है। इसके अलावा, आपके पास डिस्क कैश है और ठोस राज्य हार्डड्राइव की संभावना भी है, जो परिदृश्य पर निर्भर करता है, गति भी बढ़ा सकता है। यादृच्छिक बनाम अनुक्रमिक डेटा एक्सेस एक कारक निभाता है, साथ ही ब्लॉक आकार जिसमें डेटा स्थानांतरित किया जा रहा है। यह सब उस एप्लिकेशन पर निर्भर करता है जिसका उपयोग डिस्क तक पहुंचने के लिए किया जा रहा है।

अब, मैंने इस तथ्य को भी नहीं छुआ है कि आप जो कुछ भी नेटवर्क पर ले जा रहे हैं, वह वैसे भी डिस्क से या आने वाला है ... इसलिए ....... फिर, डिस्क तेज है।


1
RAID का उल्लेख करने के लिए अंक जो आपको समानांतर रीडिंग देता है, कुछ ऐसा जो आपको नेटवर्क पर जल्द ही मिलने की संभावना नहीं है। बेशक, अगर हम स्थानीय लैपटॉप हार्ड ड्राइव के बारे में बात कर रहे हैं, तो फास्ट सैन और फास्ट नेटवर्क का कॉम्बो अच्छी तरह से तेज हो सकता है। विशेष रूप से SSDs के साथ उस SAN में।
माइकल डिलन

10
नेटवर्क स्वाभाविक रूप से समानांतर हैं - आप किस बारे में बात कर रहे हैं? यह समग्र रूप से एक नेटवर्क पर कई प्रणालियों से पढ़ने के लिए अविश्वसनीय रूप से तुच्छ है; यह Hadoop और MPI जैसी प्रणालियों के पीछे का संपूर्ण बिंदु है, स्पष्ट बिटटोरेंट का उल्लेख नहीं करना।
jgoldschrafe

2
SONET / SDH के साथ आप 38Gbps अभी भी एसएएस की तुलना में तेज हो सकते हैं। और नेटवर्क एकत्रीकरण कुछ इस तरह से किया जा सकता है जैसे कि en.wikipedia.org/wiki/Link_aggregation
Mircea Vutcovici

10
@ जेक 6 Gbps के बारे में बात करते समय, आप इंटरफ़ेस बैंडविड्थ और उस दर के बीच एक स्पष्ट अंतर बनाना चाह सकते हैं जिस पर डिस्क वास्तव में डेटा की आपूर्ति कर सकती है।
NPE

4
मैंने अपने प्रश्न में कहा था कि मैं डिस्क कैश पर एक स्थानीय की तुलना में मेमोरी डेटाबेस में एक रिमोट के बारे में बात कर रहा था
pm100

10

खैर, यह इस बात पर निर्भर करता है कि नेटवर्क संसाधन में वह डेटा है जिसे आप आसानी से उपलब्ध (स्मृति में या इसी तरह) अनुरोध कर रहे हैं या यदि यह बदले में, इसे डिस्क से पढ़ें।

किसी भी मामले में, थ्रूपुट कुछ मामलों में अधिक हो सकता है लेकिन मेरा मानना ​​है कि विलंबता अधिक होगी।


आपका मतलब है कि डिस्क पर समय 10Gbit / s अनुरोध से अधिक है?
मिरिकया वुटकोविसी

1
@ मिरेका, उनका मतलब है कि 10Gbit नेटवर्क को कहीं से डेटा प्राप्त करना है, इसलिए यह उस स्रोत की विलंबता, और नेटवर्क की विलंबता तक सीमित रहेगा।
क्रिस एस

स्टोरेज रैम डिस्क हो सकता है। देखें: en.wikipedia.org/wiki/Solid-state_drive#DRAM-based
Mircea Vutcovici

2

IMX डिस्क अभी भी तेज है। नेटवर्क की सैद्धांतिक हस्तांतरण दर अधिक है, लेकिन व्यवहार में आप इसके करीब नहीं पहुंचते हैं।

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


2

गीगाबिट नेटवर्क के साथ मेरा अनुभव सही सर्वर दिया गया है, जिससे आप थ्रूपुट और विलंबता के मामले में स्थानीय प्रदर्शन को हरा सकते हैं। नेटवर्क टेस्ट देखें : क्या हम गीगाबिट प्रदर्शन प्राप्त कर रहे हैं?

सभी व्यावहारिक उद्देश्यों के लिए मैं नेटवर्क और स्थानीय भंडारण को समतुल्य मानने की सलाह दूंगा और केवल मेमोरी कैश का उपयोग करूंगा।

मानक चेतावनी जैसा कि आपने उल्लेख किया है कि इसमें कोई सामान्य नियम नहीं हैं; और यह कि वास्तव में अधिकांश समय अच्छी तरह से कॉन्फ़िगर किए गए सर्वर के साथ काम करना चाहिए और डेटा ट्रांसफर की सर्वोत्तम विधि का मूल्यांकन करने के लिए मैट्रिक्स का उपयोग करना चाहिए।

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

समान रूप से यदि आप समरूप हार्डवेयर के दो मशीनों के साथ काम कर रहे हैं तो विलंबता और नेटवर्क ओवरहेड स्थानीय भंडारण को तेज कर देगा; यह वास्तव में सामान्य ज्ञान है।


2

निर्भर करता है। यदि आपका I / O मुख्य रूप से रैंडम एक्सेस है तो इसके फ्लैट थ्रूपुट नेटवर्क बैंडविड्थ की तुलना में शायद उतना अच्छा नहीं है जो उपलब्ध हो सकता है। हालाँकि, अधिकांश नेटवर्क ट्रैफ़िक अंततः I / O शामिल करने वाली प्रक्रियाओं द्वारा उत्पन्न होता है। यदि नेटवर्क ट्रैफ़िक को उत्पन्न करने वाली प्रक्रिया का कार्य सेट कैश में फिट होता है, तो यह डिस्क बैंडविड्थ द्वारा बाधित नहीं होगा। यदि यह कैश को नष्ट कर देता है तो डिस्क एक अड़चन बन जाएगी।

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

नेटवर्क स्टोरेज (यानी SANs) स्ट्रीमिंग वर्कलोड पर अच्छा प्रदर्शन नहीं करता है जब तक कि इसे उचित रूप से ट्यून नहीं किया जाता है। अगर SAN का उपयोग एक सामान्य उद्देश्य समेकन वातावरण के लिए किया जा रहा है, तो यह निश्चित रूप से डेटा वेयरहाउस की तरह स्ट्रीमिंग, स्पाइकी लोड के लिए काफी उप-आशात्मक रूप से ट्यून किया जाएगा। मैंने एक विक्रेता श्वेत पत्र का सुझाव दिया है कि आपको लगभग 3x डिस्क की संख्या समान थ्रूपुट प्राप्त करने की आवश्यकता है SAN जो कि I / O को स्ट्रीमिंग के लिए ट्यून नहीं किया गया है जो कि एक है।

मेरा अनुभव उसके साथ लंबा है। वास्तव में, मैंने कभी भी एक समेकन वातावरण पर एक डेटा वेयरहाउस को तैनात नहीं किया है जहां मैं अपने डेस्कटॉप पीसी पर समान ईटीएल प्रक्रिया को तेज नहीं चला सकता मैं भी बिक्री प्रतिनिधि है SAN उपकरण के एक प्रमुख विक्रेता से रिकॉर्ड है कि उनके ग्राहकों का एक बहुत DW प्रणाली के लिए प्रत्यक्ष संलग्न भंडारण का उपयोग का कहना है क्योंकि SAN तेजी से पर्याप्त नहीं हैं।

नेटवर्क स्टोरेज कम से कम आईओपीएस प्रति परिमाण का एक क्रम है जो रैंडम एक्सेस वर्कलोड के लिए डायरेक्ट अटैच स्टोरेज की तुलना में अधिक है और स्ट्रीमिंग के लिए अधिक महंगा परिमाण के दो ऑर्डर के करीब है।


1

मेरे पास इसका अनुभव यह है कि जब आप 1Gbit कनेक्शन पर होते हैं और आप एक फाइल डाउनलोड करने की कोशिश करते हैं तो आपकी हार्डडिस्क आमतौर पर अड़चन होती है। एक बात जो आपको ध्यान में रखनी है, वह यह है कि आपको पहले एक कनेक्शन स्थापित करना होगा, जिसमें समय भी लगता है। इसलिए डेटा नेटवर्क का बड़ा हिस्सा भेजने के लिए वास्तव में डिस्क से तेज हो सकता है।


1
जब तक कि डिस्क नेटवर्क कनेक्शन के दूसरी तरफ भी अड़चन न हो ...

@Argote: सही है, लेकिन अगर सर्वर सॉफ्टवेयर सही तरीके से लिखा गया था, तो यह डिस्क पर लिखने से पहले मेमोरी में बफर कर देगा।
एम्फ़ैटेमाचिन

1

हां, सामान्य रूप से, नेटवर्क अब हार्ड-ड्राइव की तुलना में तेजी से बढ़ रहे हैं, लेकिन यह समय के साथ हो सकता है।

मुझे लगता है इसलिए मैं हूँ

जब कोई एप्लिकेशन चल रहा होता है, तो इसका मतलब है कि होस्ट मशीन काम कर रही है, जबकि नेटवर्क पर काम करने के लिए एक सामान्य प्रोटोकॉल की आवश्यकता होती है, सहकर्मी की उपलब्धता, चैनल सुरक्षा की जांच कर रहा है ... और यदि सहकर्मी विभिन्न प्लेटफार्मों का उपयोग करते हैं, तो यह हासिल करना कठिन है कि आप क्या कर सकते हैं ... एकल मशीन।

मैं इसे व्यापार-नापसंद के मामले में देखना पसंद करता हूं, जो सबसे मजबूत है ...


4
मुझे संदेह है, इसलिए मैं हो सकता हूं।
जॉन गार्डनियर्स

1

आपको इस तुलना के लिए एक सटीक उपयोग के मामले का वर्णन करना होगा। हार्डड्राइव में समय + ट्रांसफर दर और कैश की तलाश होती है। नेटवर्क में विलंबता, स्थानांतरण दर और प्रोटोकॉल उपरि है ...

मुझे लगता है कि आपकी मूल कैश मेमोरी> मेमोरी> डिस्क> नेटवर्क अभी भी सामान्य रूप से सही है


0

डिस्क SCSI, SAS या IDE बस के माध्यम से सीपीयू के साथ जुड़ा हुआ है। एससीएसआई या एटीएपीआई - एक विशिष्ट प्रोटोकॉल चलाने वाला आंतरिक नेटवर्क कौन सा है। ईथरनेट लंबी दूरी पर काम करने के लिए डिज़ाइन किया गया है और एसएएस / एससीएसआई / आईडीई की तुलना में बहुत धीमा हो सकता है। तो कौन सा तेज है, यह निर्भर करता है कि आप किन तकनीकों की तुलना कर रहे हैं। यदि आप 20 साल पुराने लैपटॉप HDD की तुलना 10Gbps की रैम स्टोरेज से करते हैं, तो विजेता हमेशा नेटवर्किंग ही रहेगा। और जब आप एक भंडारण खरीदते हैं तो आपको इसकी तुलना कीमत और प्रबंधन क्षमता से करनी होती है।


0

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


0

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

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

दूसरी ओर, कुछ वेब प्रौद्योगिकियां (asp.net webforms viewstate, मैं आपको देख रहा हूं) ग्राहक वेब ब्राउज़र से कैश (सॉर्ट) के रूप में बहुत सारी जानकारी पुश करना पसंद करता हूं। यदि यह एक स्थानीय लेन कनेक्शन है (और asp.net webform के बचाव में यह बहुत समय का सच है) तो यह सब बुरा नहीं है, लेकिन सार्वजनिक इंटरनेट पर यह बिल्कुल प्रदर्शन को मार सकता है , जैसे कि आप अक्सर इसे धक्का देने से बहुत बेहतर होते हैं इसके बजाय एक डेटाबेस या स्थानीय डिस्क के लिए।


0

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

हालाँकि, यदि आप डेटा की छोटी इकाइयों तक बेतरतीब ढंग से पहुँच रहे थे और नेटवर्क निर्दोष नहीं था या आपके पास पहुँचने से बहुत से हॉप्स और अधिक थे, तो मैं शर्त लगाता हूँ कि एक स्थानीय कैश लगभग पूरी तरह से यांत्रिक डिस्क ड्राइव पर लगभग 100 पर है। % समय की। लेकिन आप एक दिलचस्प बिंदु लाते हैं और अगर नेटवर्क की गति बढ़ती रहती है तो कब तक किसी चीज के स्थानीय भंडारण की आवश्यकता होगी?

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