मेरा सहकर्मी एक ऐसे एप्लिकेशन का उपयोग कर रहा है जो बहुत अधिक मेमोरी का उपभोग करता है जो सिस्टम को बहुत धीमा कर देता है। क्या इंटरनेट पर अन्य पीसी के साथ मेमोरी साझा करना संभव है?
सिस्टम में 8 जीबी रैम है, और एप्लिकेशन 6 जीबी से अधिक खपत करता है।
मेरा सहकर्मी एक ऐसे एप्लिकेशन का उपयोग कर रहा है जो बहुत अधिक मेमोरी का उपभोग करता है जो सिस्टम को बहुत धीमा कर देता है। क्या इंटरनेट पर अन्य पीसी के साथ मेमोरी साझा करना संभव है?
सिस्टम में 8 जीबी रैम है, और एप्लिकेशन 6 जीबी से अधिक खपत करता है।
जवाबों:
मैंने केवल एक स्टैंडअलोन एप्लिकेशन पर विचार किया है जो "मानक" मशीन पर चलता है, जिसमें इसे कहीं और स्थापित करने या विशेषज्ञ हार्डवेयर या सॉफ़्टवेयर का उपयोग करने की क्षमता नहीं है। अन्य उत्तर (सही ढंग से) कार्य के लिए सॉफ्टवेयर माइग्रेशन या समर्पित हार्डवेयर को संबोधित करते हैं।
किसी नेटवर्क के माध्यम से "रैम साझा करने" का कोई भी तरीका उस नेटवर्क माध्यम की सीमाओं के अधीन होगा। जैसा कि गीगाबिट ईथरनेट भी लगभग 100 एमबी / एस (मेगाबाइट) तक सीमित है, इसका मतलब है कि आपकी "रैम" की गति भी सीमित होगी।
100 एमबी / एस रैम की गति का एक छोटा अंश है जो वास्तव में आपके सिस्टम में है। आपका कार्यक्रम दर्दनाक रूप से धीमा होगा और ऐसा महसूस होगा कि यह 90 के दशक की शुरुआत से कंप्यूटर पर चल रहा है
आधुनिक हार्ड ड्राइव अनुक्रमिक पढ़ने और लिखने के लिए हैं, इससे थोड़ा तेज। SSD कई गुना तेज हैं।
यह विलंबता की समस्याओं की अनदेखी कर रहा है जो आपके कार्यक्रम को फिर से परिमाण को धीमा करने का आदेश देगा।
धीमेपन और अन्य तकनीकी मुद्दों के कारण यह एक ऐसा मुद्दा नहीं है जिसे किसी ने कभी भी "घर" या "कार्यालय" सिस्टम के लिए हल करने के प्रयास के लायक नहीं माना है। जरूरत पड़ने पर ज्यादा रैम खरीदना सस्ता और कारगर है।
बस एक पृष्ठ फ़ाइल के लिए अधिक रैम, या यहां तक कि एसएसडी खरीदें। ऐसा करने का कोई अन्य तरीका नहीं है, जिसमें कम लाभ के लिए काम की मात्रा या हार्डवेयर की आवश्यकता नहीं होती है।
बस पूर्णता के लिए: InfiniBand अन्य मशीनों की मेमोरी तक सीधे पहुंच की अनुमति देता है।
हालाँकि, इसकी आवश्यकता है:
यह मौजूदा नेटवर्क पर काम नहीं करता है, इसके लिए सभी जुड़े नोड्स के लिए पूरी तरह से स्वतंत्र बुनियादी ढांचे की आवश्यकता होती है। यह इंटरनेट पर भी काम नहीं करता है
Is there any alternative solution?
यह डेटा की प्रकृति पर अत्यधिक निर्भर करता है।
आप 2 अलग मशीनों पर 2 अलग mysql सर्वर चला सकते हैं।
फिर 1/2 में डेटा को विभाजित करें और स्वचालित रूप से यह जानने के लिए प्रोग्राम लिखें कि किस सर्वर पर जाना है।
यदि आपके पास उपलब्ध है तो बेशक यह किसी भी संख्या में सर्वर तक पहुंचा जा सकता है।
हां, नेटवर्क ब्लॉक डिवाइस प्रोटोकॉल का उपयोग करके, ऐसा करना आसान है (और मैंने डिस्कलेस सिस्टम को स्वैप की आवश्यकता के लिए किया है)।
nbd-server
सर्वर मशीन पर स्थापित करें , और इसे प्रति-मेजबान फ़ाइलों को ऑटो-कॉन्फ़िगर करने के लिए कॉन्फ़िगर करें।
सुनिश्चित करें कि आपकी ग्राहक मशीनों ने एनबीडी को अपनी गुठली में संकलित किया है, और फिर उन्हें एनबीडी-माउंटेड डिवाइस पर स्वैप करने के लिए कॉन्फ़िगर करें। nbd-client
पैकेज कर सकते हैं।
क्षमा करें यदि ऊपर थोड़ा अस्पष्ट है - मैंने जिन मशीनों पर यह किया है वे यहां से उपलब्ध नहीं हैं; मैं उन विवरणों को भरने में सक्षम हो सकता हूं जब मेरे पास उनकी पहुंच है।
एक वैकल्पिक NBD सर्वर कार्यान्वयन कहा जाता है nbdkit
; मैं इसके बारे में कुछ नहीं जानता।
छोटे, महत्वहीन विवरण "विंडोज 10, वर्कस्टेशन में 8 जी बी रैम है" को देखते हुए, वास्तव में केवल एक ही जवाब है: अधिक रैम खरीदें और कम बकवास चलाएं।
SSD खरीदना और पेज फ़ाइल को वहाँ रखना सबसे अच्छा विकल्प होगा, लेकिन वास्तव में ... अधिक RAM खरीदें।
नेटवर्क पर पेज फ़ाइल ("शेयर मेमोरी") की सेवा करना निश्चित रूप से संभव है, लेकिन यह एक बहुत बुरा विचार है। हालांकि यह सच है कि सीमावर्ती मामले मौजूद हैं जहां नेटवर्क पर पहुंच का समय एक स्थानीय ड्राइव तक पहुंचने से बेहतर होगा, यह आपके उपयोग के मामले के लिए अप्रासंगिक है, क्योंकि आपको एक ही समय में लगातार कम पहुंच समय और उच्च बैंडविड्थ की आवश्यकता होती है । याद रखें, आप एक या दो पेज के दोषों का अनुमान नहीं लगा रहे हैं, आप लगातार स्वैप कर रहे हैं। जब तक आप हजारों की एक जोड़ी का भुगतान करने के लिए तैयार नहीं होते हैं, तब तक कोई रास्ता नहीं है जो आपको रैम या एसएसडी खरीदने के लिए कहीं भी मिल जाएगा।
विंडोज 10 चलाने के लिए 8 जीबी लगभग पर्याप्त नहीं है और एक ही समय में एक मेमोरी-भूखा एप्लिकेशन है। यह एक ही समय में वर्ड, एक्सेल और आउटलुक चलाने के लिए मुश्किल से पर्याप्त है। यह वास्तव में विशिष्ट पूरी तरह से अनुपयोगी "कुल बकवास कॉर्पोरेट सेटअप" है, जिसे लाखों लोगों को अपने काम के लैपटॉप पर हर दिन के साथ रहना पड़ता है। एक अन्य मेमोरी मॉड्यूल में 100-200 मुद्रा का निवेश करें, और यह एक सप्ताह के भीतर इसकी लागत को बढ़ाता है (जो चीजें मिनट लगते हैं अब सेकंड लगते हैं, और समय पैसा है - अकस्मात यह अक्सर आपके स्थानीय बीन काउंटर के सिर में प्रवेश करना मुश्किल होता है)।
वैकल्पिक रूप से, यदि आप मशीन के मालिक हैं, तो आप Windows 10 बकवास पर कट करने के लिए NTLite का उपयोग कर सकते हैं, इसकी मेमोरी पदचिह्न को कम कर सकते हैं। या, आप सिर्फ 80% ज्यादातर अनावश्यक सेवाओं को बंद कर सकते हैं। यह अविश्वसनीय लगता है, लेकिन विंडोज के हाल के संस्करण को 2 जीबी रैम के उपयोग के साथ चलाना संभव है।
लेकिन वास्तव में, बस रैम खरीदें ... यह विंडोज बकवास को काटने पर अपने कीमती समय के घंटे खर्च करने की तुलना में बहुत तेज़ और आसान है।
एक सरल विकल्प रिमोट पीसी पर एप्लिकेशन को चलाने के लिए होगा , संभवतः एक समर्पित उपयोगकर्ता खाते के तहत, और बस इसे आरडीपी, वीएनसी या जो भी सुविधाजनक है के माध्यम से नियंत्रित करें।
एक और विकल्प अस्थायी रूप से ऐसे वातावरण में एप्लिकेशन को तैनात करना है जहां राम को आसानी से ऊपर या नीचे बढ़ाया जा सकता है।
मैं एक अमेज़ॅन AWS उदाहरण को देखूंगा, जिसे एक रिबूट के साथ आकार में बदला जा सकता है।
IE एक C5.large की तरह एक छोटा सा उदाहरण 4GB RAM और 2 कोर है, और लिनक्स के लिए एक दिन में $ 2.04 USD, या एक विंडोज़ इंस्टाल के लिए $ 4.26 USD खर्च होता है। ईबीएस डिस्क स्थान एक अतिरिक्त लागत है और जीबी आवंटित के साथ रैखिक रूप से तराजू है।
आप अपने सिस्टम को इस छोटे आकार में सेट कर सकते हैं, और फिर जब आप पूरा शोर जाना चाहते हैं, तो इसे रोकें, उदाहरण के आकार को बदलें, और सॉफ़्टवेयर को चलाएं।
या सबसे बड़ा एक ...
https://www.ec2instances.info/ आपको एक उपयुक्त आकार चुनने में मदद करेगा। ध्यान दें कि कुछ स्थानों की लागत अन्य की तुलना में अधिक है। सिंगापुर और उत्तरी कैलिफोर्निया महंगे हैं। हालाँकि आपका VM तब कुछ भी नहीं खर्च करता है, जब वह नहीं चल रहा हो, डिस्क स्टोरेज लागत के अलावा।
नकारात्मक पक्ष यह है कि अगर आपको लंबे समय तक इस मेमोरी की आवश्यकता है, तो वीएम समय खरीदना एक महंगा तरीका है। हालांकि लेखाकार कभी-कभी किराये की तरह परिचालन लागतों को प्राथमिकता देते हैं, उन्नयन की तरह पूंजीगत लागतों को।
जैसा कि दूसरों ने कहा है कि यह तकनीकी रूप से संभव है लेकिन इसके लायक नहीं है।
हालाँकि यदि आप अपने कंप्यूटर के उपयोग को गति देना चाहते हैं, तो संभव है कि आपके कुछ एप्लिकेशन दूरस्थ सर्वर से बाहर हो जाएं।
यह ज्यादातर इस बात पर निर्भर करेगा कि आप क्या काम कर रहे हैं और आप किस एप्लिकेशन का उपयोग करते हैं। यदि आप एक छोटे डेटा आउटपुट के लिए बहुत अधिक प्रसंस्करण समय की आवश्यकता वाले प्रोग्राम चला रहे हैं, तो आप उन्हें किसी अन्य चीज़ पर काम करने के लिए समय और रेज़र को बचाने के लिए अपने कंप्यूटर से भिन्न सर्वर पर चला सकते हैं।
मेरे पास जो उदाहरण है वह एक सर्वर है जो मेरे कोड का हर बार परीक्षण करता है जब मैं एक संशोधन को धक्का देता हूं। इस तरह के समाधान के साथ विचार यह है कि यह विशिष्ट उपयोग के मामलों तक सीमित है।
अपने पीसी के लिए अधिक रैम खरीदने के लिए आईटी से पूछें, और टास्क मैनेजर में ऐप के उपयोग के स्क्रीनशॉट का उपयोग करके आवश्यकता को प्रदर्शित करें।
इसके लिए एक वाणिज्यिक समाधान है, कोव नामक कंपनी के माध्यम से ( http://kove.net/)। इसे "बैकप्लेन" (ईथरनेट काम करता है) पर काम करने के लिए एक Infiniband बुनियादी ढांचे की आवश्यकता होती है, हालांकि RoCE जैसे अन्य विकल्प कभी-कभी विशिष्टताओं के आधार पर उपलब्ध कराए जा सकते हैं। वे शून्य कोड परिवर्तन एकीकरण की अनुमति देने के लिए कई पारदर्शी इंटरफेस प्रदान करते हैं, और अधिक प्रत्यक्ष सीपीयू एक्सेस (यानी कर्नेल ओवरहेड से बचने) के साथ कर्नेल बाईपास के लिए एपीआई। प्रदर्शन के संदर्भ में, यह आपके आवेदन पर निर्भर करता है। यदि आप सीपीयू बाध्य हैं, तो प्रभाव न्यूनतम हो सकता है (जो आश्चर्यजनक हो सकता है)। यदि आप स्थानीय होस्ट पर बंधे हुए मेमोरी बैंडविड्थ हैं, तो वे आपको बड़ी मेमोरी देंगे, लेकिन आप पहले से मौजूद अड़चन से घबरा जाएंगे। इस मामले में, क्या कार्य-भार के लिए यह फायदेमंद है कि एक बॉक्स में जितनी बड़ी मेमोरी रखी जा सकती है, और रैम से बाहर नहीं चला? हमने वर्चुअलाइजेशन और अजगर मशीन लर्निंग लाइब्रेरी के साथ (बहुत) अच्छे परिणाम देखे हैं। उच्च अंत एचपीसी आवेदन बदतर होते हैं, लेकिन हमने सी एपीआई का उपयोग किया है और नोड काउंट को कम करते हुए प्रदर्शन को स्वीकार्य बनाए रखने में कामयाब रहे (नोड्स रैम के लिए थे, सीपीयू चक्र नहीं थे), जो एमपीआई की तुलना में एक प्लस है । क्या यह आपके सहकर्मी के लिए एक अच्छा समाधान है, यह बताना मुश्किल है, लेकिन यह एक विकल्प है जिस पर आप गौर कर सकते हैं। उम्मीद है की वो मदद करदे। स्पष्ट होने के लिए, मैं कोवे के लिए काम नहीं करता हूं, और कोई वित्तीय प्रोत्साहन नहीं है, लेकिन मैंने उनके साथ कई वर्षों तक सहयोग किया है और लगता है कि इस तकनीक में कुछ कंप्यूटिंग के तरीके को काफी प्रभावित करने की क्षमता है। लेकिन हमने C API का उपयोग किया है और नोड काउंट को कम करते हुए प्रदर्शन को स्वीकार्य बनाए रखने में कामयाब रहे (नोड्स RAM के लिए थे, CPU cycles नहीं थे), जो MPI की तुलना में एक प्लस है। क्या यह आपके सहकर्मी के लिए एक अच्छा समाधान है, यह बताना मुश्किल है, लेकिन यह एक विकल्प है जिस पर आप गौर कर सकते हैं। उम्मीद है की वो मदद करदे। स्पष्ट होने के लिए, मैं कोवे के लिए काम नहीं करता हूं, और कोई वित्तीय प्रोत्साहन नहीं है, लेकिन मैंने उनके साथ कई वर्षों तक सहयोग किया है और लगता है कि इस तकनीक में कुछ कंप्यूटिंग के तरीके को काफी प्रभावित करने की क्षमता है। लेकिन हमने C API का उपयोग किया है और नोड काउंट को कम करते हुए प्रदर्शन को स्वीकार्य बनाए रखने में कामयाब रहे (नोड्स RAM के लिए थे, CPU cycles नहीं थे), जो MPI की तुलना में एक प्लस है। क्या यह आपके सहकर्मी के लिए एक अच्छा समाधान है, यह बताना मुश्किल है, लेकिन यह एक विकल्प है जिस पर आप गौर कर सकते हैं। उम्मीद है की वो मदद करदे। स्पष्ट होने के लिए, मैं कोवे के लिए काम नहीं करता हूं, और कोई वित्तीय प्रोत्साहन नहीं है, लेकिन मैंने उनके साथ कई वर्षों तक सहयोग किया है और लगता है कि इस तकनीक में कुछ कंप्यूटिंग के तरीके को काफी प्रभावित करने की क्षमता है।
देखने का एक और बिंदु - शायद समस्या सिस्टम संसाधनों पर सीमा नहीं है, लेकिन आपके मित्र जो बेकार आवेदन लिख रहे हैं। 6 जीबी की रैम में बहुत मेमोरी है।
सिर्फ इसलिए कि कई अन्य एप्लिकेशन अत्यधिक फूला हुआ हैं , जरूरी नहीं कि आपके मित्र एप्लिकेशन को उनमें से एक होना चाहिए। विभिन्न प्रोग्रामिंग विधियों का उपयोग गति में सुधार करते हुए स्मृति आवश्यकताओं को कम कर सकता है। उदाहरण के लिए, यदि ऐप संपूर्ण डेटासेट को मेमोरी में लोड करता है और फिर उस पर काम करता है, तो उदाहरण के लिए (स्थानीय या दूरस्थ) SQL डेटाबेस में कुछ चुनिंदा अनुक्रमित के साथ डेटा संग्रहीत करना और वहां तक पहुंच की तुलना में यह बहुत अधिक बेकार होगा। यदि संभव हो तो डेटा ब्लॉक-बाय-ब्लॉक को संसाधित करें, बजाय इसे एक बार में लोड करने के। इन-मेमोरी स्ट्रक्चर्स बेकार भी हो सकते हैं। मुफ्त स्मृति जब आप इसके साथ कर रहे हैं। रैम में लोड न करें जो आप इसके बजाय मेमोरी मैप कर सकते हैं। और सैकड़ों अन्य टिप्स ...
यदि एप्लिकेशन को वास्तव में अधिक मेमोरी की आवश्यकता होती है जिसे अन्य कंप्यूटरों पर संग्रहीत करने की आवश्यकता होती है, तो इसे मेमकाटेड का उपयोग करने के लिए संशोधित किया जा सकता है और इसे वहां स्टोर करना पसंद है। बोनस अंक, क्योंकि यह भविष्य में बेहतर होगा।
इसलिए उपयोगकर्ता ने नेटवर्क पर मेमोरी साझा करने के लिए HOW के लिए कहा । नहीं अगर यह एक अच्छा विचार है। तो यहाँ वास्तव में आप इसे कैसे कर सकते हैं।
मैं यह नहीं कह रहा हूं कि यह एक अच्छा विचार है, या प्रदर्शन करने वाला होगा, लेकिन यह काम करना चाहिए ।
मुझे लगता है कि यह विंडोज सर्वर नहीं है जहां आप एक iSCSI माउंट बिंदु बना सकते हैं।
कंप्यूटर 1 चरण:
कंप्यूटर 2 चरण:
किया हुआ!
कैविट्स - आप वीएचडी बकवास को छोड़ने में सक्षम हो सकते हैं यदि विंडोज़ आपको पेज फ़ाइल को नेटवर्क शेयर में स्थानांतरित करने देता है। ऑनलाइन (स्पष्ट कारणों के लिए) इसके कई उदाहरण नहीं हैं।
पूर्ण सिस्टम अस्थिरता हो सकती है, या पूरी तरह से कुछ और। वास्तव में कोई नहीं जानता कि क्या होगा।
जैसा कि आप नेटवर्क पर साझा करने के लिए "रैम" का उल्लेख करते हैं, किसी भी तरह की "मेमोरी" नहीं, अंतिम उत्तर सैद्धांतिक रूप से हां, व्यावहारिक रूप से नहीं होगा।
जबकि अन्य प्रकार की मेमोरी जैसे भंडारण और अन्य अस्थायी डेटा नियमित रूप से विभिन्न उद्देश्यों और कारणों के लिए नेटवर्क पर साझा किए जाते हैं। इसी तरह से जरूरत पड़ने पर रैम को तकनीकी रूप से साझा किया जा सकता है। लेकिन वास्तविक दुनिया में प्रदर्शन के लिए प्रदर्शन और लागत बहुत अधिक होगी।
रैम या रैंडम एक्सेस मेमोरी का उपयोग ऑपरेटिंग सिस्टम द्वारा किया जाता है, क्योंकि इस पर बहुत सारे रीड / राइट ऑपरेशन किए जाते हैं। औसत सिस्टम पर, रैम की डेटा क्षमता अन्य भागों की तुलना में सबसे अधिक है। यदि आप एक नेटवर्क पर RAM डालते हैं, तो आपको बहुत अधिक गति डेटा ट्रांसफर क्षमता की आवश्यकता होती है और तकनीकी रूप से प्राप्त करने के लिए भी लागत उच्च हो जाएगी। एक नेटवर्क स्पीड अपग्रेड के लिए लागत का एक छोटा सा हिस्सा के साथ आप स्थानीय रूप से अपनी मशीन के लिए रैम प्राप्त करेंगे।
एप्लिकेशन आमतौर पर वर्चुअल मेमोरी में चलते हैं, इसलिए उनकी वर्चुअल मेमोरी आवश्यकता सिस्टम की उपलब्ध भौतिक मेमोरी को प्रदर्शन के अलावा कोई परिणाम नहीं दे सकती है। सक्रिय उपयोग के लिए किसी भी क्षण में भौतिक मेमोरी को मुक्त करने के लिए ऑपरेटिंग सिस्टम बस वर्चुअल मेमोरी को डिस्क से बाहर पेज करेगा । यह आमतौर पर उन अनुप्रयोगों के लिए ठीक काम करता है जिनके पास उचित स्थानीयता है (किसी भी समय गतिविधि कुछ हद तक एप्लिकेशन के वर्चुअल मेमोरी स्पेस में सीमित क्षेत्रों पर केंद्रित है)। यदि किसी एप्लिकेशन की खराब स्थानीयता है (अपने वर्चुअल स्पेस पर लगातार मेमोरी को संदर्भित करता है), तो यह खराब प्रदर्शन करेगा जब तक कि इसकी सभी वर्चुअल मेमोरी को भौतिक मेमोरी (इसकी सभी वर्चुअल मेमोरी निवासी हो) में समायोजित नहीं किया जा सकता है।
इसलिए, यहां कुछ संभावनाएं हैं:
दूरस्थ कंप्यूटर पर मेमोरी का उपयोग करने का विचार मूल रूप से एक नेटवर्क पेजिंग फ़ाइल बना रहा है । सिद्धांत रूप में, यह काम कर सकता है, लेकिन व्यवहार में, प्रदर्शन बेहतर होगा यदि पेजिंग फ़ाइल नेटवर्क बैंडविड्थ और विलंबता के कारण कंप्यूटर (इसकी अपनी हार्ड ड्राइव) के लिए स्थानीय थी। इससे कोई फर्क नहीं पड़ता कि रिमोट सिस्टम अपनी मेमोरी में या उसके डिस्क पर पेजिंग फ़ाइल को होस्ट कर रहा है, तो टोंटी (प्रदर्शन का सबसे महत्वपूर्ण सीमक) नेटवर्क होगा। यह विशेष रूप से इंटरनेट पर सच होगा, लेकिन यह भी सच होगा कि यदि दूरस्थ कंप्यूटर उसी लैन पर आसन्न है।
यह वास्तव में इस बात पर निर्भर करता है कि यह किस प्रकार का अनुप्रयोग है और इसके लिए क्या उपयोग किया जाता है।
उदाहरण के लिए कई वेब एप्लिकेशन memcached
सर्वर से कनेक्ट होकर नेटवर्क पर रैम का उपयोग कर सकते हैं । यह बहुत सारे रैम के साथ दूसरे कंप्यूटर पर कैश डेटा (और अन्य डेटा जो कि एक्सेस करने में तेज होना चाहिए) को स्टोर करने की अनुमति देगा।
बेशक यह एप्लिकेशन विशिष्ट है और एक एप्लिकेशन की आवश्यकता है जो मेम्केड का उपयोग कर सकता है। यह आपको स्लैक का दूसरा उदाहरण खोलने में मदद नहीं करेगा क्योंकि एक ब्राउज़र ऐसे कैश बैकएंड का उपयोग करने का समर्थन नहीं करता है।