क्या ओएसएक्स को अधिक रैम और कम स्वैप का उपयोग करने का एक तरीका है?


12

जो समस्या मुझे हो रही है वह एक सर्वर (और अन्य OSX बॉक्स के साथ ही) हमारे पास 4GB RAM की है, लेकिन हम यह पता लगा रहे हैं कि OSX केवल 6-7GB स्वैप होने पर भी उपलब्ध RAM का 40-60% उपयोग करता है। सर्वर Apache और MySQL चला रहा है जबकि अन्य मशीनें डेस्कटॉप हैं।

मैं इसकी तुलना समान लिनक्स बॉक्स (हार्डवेयर और सॉफ्टवेयर) के उपयोग से कर रहा हूं और पा रहा हूं कि लिनक्स आमतौर पर 80-90% रैम का उपयोग करता है और इसमें बहुत छोटी स्वैप फाइल (2-3GB) होती है। लिनक्स सर्वर भी आमतौर पर बहुत तेजी से चलते हैं।

क्या ओएसएक्स को डिस्क स्वैप फ़ाइल का उपयोग करने से पहले अधिक या अधिकांश रैम का उपयोग करने के लिए मजबूर करने का एक तरीका है?

विंडोज में आप वास्तव में स्वैप को पूरी तरह से अक्षम कर सकते हैं। क्या OSX के लिए भी कुछ ऐसा ही है?


स्पष्टीकरण के लिए: 1. वीएम सिस्टम में अड़चन है? जब आप मेमोरी स्टार्स देखते हैं तो पेजआउट होने पर बड़ी मात्रा में होते हैं। 2. आप अपनी निशुल्क और वीएम आकार की जानकारी कहां प्राप्त कर रहे हैं? उदाहरण के लिए गतिविधि मॉनीटर में कहा गया VM आकार स्वैप फ़ाइल के आकार के समान नहीं है।
चीलियन

मेरे पास प्रमाण नहीं है कि VM प्रणाली (VM या स्वैप) समस्या है, लेकिन मुझे पता है कि मेरे डेस्कटॉप पर मेरे पास 6GB RAM है, जिनमें से आमतौर पर 2-3GB आमतौर पर मुफ्त है। जब मैं प्रोग्राम स्विच करता हूं, तो आपको लगता है कि यह तेज़ी से धधक रहा होगा क्योंकि यह सब रैम में है, लेकिन इसके बजाय, इलस्ट्रेटर जैसी किसी चीज़ पर स्विच करने के लिए 2-15s लगते हैं। मैं सोच रहा हूं कि सर्वर पर कुछ ऐसी ही बातें हो रही हैं - MySQL या अस्थायी टेबलों के लिए कैशिंग की तरह। मैं VM, RAM और स्वैप उपयोग का निर्धारण करने के लिए शीर्ष का उपयोग कर रहा हूं। कोई विचार?
डैरिल हेन

3
वास्तविक vm उपयोग को निर्धारित करने के लिए सबसे आसान चलाना है du -sh /var/vm- कहा कि यह कृत्रिम रूप से उच्च हो सकता है अगर वहाँ एक नींद (सबसे अक्सर लैपटॉप पर देखा जाता है) मौजूद है। कई उपकरण उपलब्ध हैं जो यह निर्धारित करने में आपकी सहायता कर सकते हैं कि क्या यह मेमोरी है जो धीमी गति का कारण बन रहा है: vm_stat- विशेष रूप से आप पेजआउट मान में रुचि रखते हैं - यदि यह काफी बढ़ जाता है, तो आप जानते हैं कि आप भारी स्वैप कर रहे हैं। Apple उनकी स्मृति को कैसे प्रबंधित करता है, इस बारे में अधिक जानकारी के लिए: developer.apple.com/documentation/Performance/Conceptual/…
Chealion

जवाबों:


17

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

वर्चुअल मेमोरी सिस्टम में "हैकबिलिटी" की कमी के कारण आपके सबसे अच्छे विकल्प वर्चुअल मेमोरी के प्रदर्शन का मूल्यांकन करने के लिए यह देखने के लिए है कि क्या यह वास्तव में कारण है कि आपके पास प्रदर्शन के मुद्दे हैं - सबसे बुनियादी इसका उपयोग vm_statया उपयोग करना है vm_stat [number of seconds]कितने पृष्ठ बहिष्कृत कर रहे हैं यह देखने के लिए उपयोग करके जीना । रैम से अप्रयुक्त पृष्ठों को हार्ड ड्राइव में ले जाने से पृष्ठों की हार्ड ड्राइव से आपके रैम पर वापस लाने की तुलना में बहुत कम लागत होती है। OS X शब्दों में एक पृष्ठ 4kb डेटा को संदर्भित करता है।

इसके अतिरिक्त, 32 बिट प्रक्रियाएँ (उदाहरण के लिए। इलस्ट्रेटर) 4GB से अधिक का उपयोग नहीं कर सकती हैं, इसलिए सैद्धांतिक रूप से 2GB मुक्त होना संभव है और यदि आपके पास 6GB स्थापित है, तो स्मृति से बाहर एक प्रक्रिया है।

आपके डेस्कटॉप और सर्वर दोनों पर मैं vm_stat 2अंतिम कॉलम चलाऊंगा और जांचूंगा - खासकर जब आपको Illustrator कहने के लिए स्विच करते समय कई सेकंड की देरी का अनुभव हो।

यह पता लगाने के लिए कि वास्तव में आप कितनी बड़ी स्वैप हैं या तो गतिविधि मॉनिटर में स्वैप आकार की जांच कर सकते हैं या चला सकते हैं du -shc /var/vm/swap* | tail -n 1

का उपयोग करना du -sh /var/vmएक चेतावनी है: लैपटॉप पर जिसमें हाइबरनेट मोड है (पिछले 4 वर्षों या कुछ भी नया करने के लिए) वहां sleepimageलगभग एक ही आकार हो सकता है कि आपने कितनी मेमोरी स्थापित की है।


मैक ओएस एक्स मेमोरी शब्दजाल:

वायर्ड : यह कर्नेल कोड और ऐसे को संदर्भित करता है। मेमोरी जिसे कभी भी रैम से बाहर नहीं जाना चाहिए। निवासी स्मृति के रूप में भी जानते हैं।

साझा : मेमोरी जो दो या अधिक प्रक्रियाओं के बीच साझा की जाती है। दोनों प्रक्रियाएँ स्मृति की इस मात्रा को प्रदर्शित करती हैं इसलिए यह थोड़ा भ्रामक हो सकता है कि वास्तव में कितनी स्मृति उपयोग में है।

Real : यह एक अनुप्रयोग के लिए "वास्तविक" मेमोरी का उपयोग है जैसा कि task_info () द्वारा रिपोर्ट किया गया है - वर्तमान प्रक्रिया के भौतिक पृष्ठों की संख्या की एक मोटी गणना। (RSIZE)

निजी : यह स्मृति है कि एक प्रक्रिया पूरी तरह से अपने आप में उपयोग कर रही है जो कि रेजिडेंट मेमोरी में उपयोग की जाती है। (RPRVT)

वर्चुअल : इस प्रक्रिया में पता स्थान की कुल राशि जो किसी भी चीज़ के लिए मैप की जाती है - चाहे वह चर या किसी भी चीज़ के लिए एक बड़ी जगह हो - यह वास्तविक VM उपयोग के लिए समान नहीं है। (VSIZE)

सक्रिय : वर्तमान में सक्रिय के रूप में लेबल की गई मेमोरी और रैम का उपयोग किया जाता है।

निष्क्रिय : "निष्क्रिय स्मृति का अब उपयोग नहीं किया जा रहा है और डिस्क पर कैश्ड हो गया है। यह रैम में रहेगा जब तक कि किसी अन्य को स्थान की आवश्यकता न हो। रैम में इस जानकारी को छोड़ना आपके लाभ के लिए है यदि आप (या आपके कंप्यूटर का ग्राहक) वापस आते हैं। बाद में इसे करने के लिए। " - मैक ओएस एक्स मदद

Free : RAM की मात्रा वास्तव में बिना किसी डेटा के उपलब्ध है।


मुझे जो सबसे अच्छा प्रलेखन पता है (और फॉलोअप अनुसंधान में पाया गया है) उनकी डेवलपर वेबसाइट पर Apple का अपना प्रबंध मेमोरी लेख है।

अन्य सार्थक स्रोत: डार्विन-देव मेलिंग सूची: [ 1 ], [ ] और मैकओएसएक्स संकेत पर एक पुराना लेख । इसके अतिरिक्त माइक ऐश ने अपने ब्लॉग पर एक अच्छे व्यक्ति का परिचय प्रस्तुत किया है


यह संभव हो सकता है (मैंने इसे चलाने की कोशिश नहीं की है) वर्चुअल मेमोरी सिस्टम को चलाने के द्वारा अक्षम करना sudo launchctl unload /System/Library/LaunchDaemons/com.apple.dynamic_pager.plistऔर फिर पुनरारंभ करना ताकि डायनेमिक_पेजर (प्रोग्राम जो वास्तव में वर्चुअल मेमोरी आवंटन करता है) शुरू न हो। हालाँकि, क्योंकि OS मानता है कि इसमें वर्चुअल मेमोरी है जो आप अपने आप को बहुत जल्दी, बहुत जल्दी मुद्दों में भाग सकते हैं। इसे वापस लोड करने के लिए रन sudo launchctl load /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist(यदि एकल उपयोगकर्ता मोड से आवश्यक हो)

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