अस्थायी रूप से रैम को कम स्पेस मशीन की नकल करने के लिए अक्षम करना?


30

मुझे दो 2009 मैकबुक मिले हैं। एक में 4 गीगा रैम है और ओएस 10.10 चलाता है; एक में 2 गिग्स हैं और ओएस 10.5 चलाता है।

मैं बाद वाली मशीन को योसेमाइट (10.10) में अपग्रेड करने पर विचार कर रहा हूं, लेकिन मुझे चिंता है कि यह इतनी कम रैम के साथ धीरे-धीरे चलेगी। प्रदर्शन कैसा होगा, इसका अंदाजा लगाने के लिए, मैं सोच रहा हूं कि कहीं ऐसा न हो कि मैं उच्च रैम वाली मशीन में "RAM" बंद कर दूं। अगर मैंने ऐसा किया, तो मुझे समझ में आ सकता है कि वास्तव में अपग्रेड करने से पहले योसेमाइट 2 गिग मशीन पर कैसे चलेगा।

क्या चिप को शारीरिक रूप से हटाने के बिना रैम को अस्थायी रूप से अक्षम करने का कोई तरीका है?


चिप को आवश्यकता क्यों नहीं हटा रहा है? क्या आप केवल दो मैकबुक की भौतिक रैम को स्वैप नहीं कर सकते हैं?
सारू लिंडस्टोक

4
मेरे पास सही पेचकश काम नहीं है।
dB '

3
2009 मैकबुक प्रो DDR3 1333 मेगाहर्ट्ज रैम को स्वीकार करेगा (यह डाउन-स्पीड 1066mhz होगा)। आप $ 30 के लिए खरीद सकते हैं। इन मशीनों को 8GB तक का समय लगेगा। एक एसएसडी जोड़ें और यह अभी भी एक बहुत ही सभ्य मशीन है।
जैस्पर ब्लूज़

@dB 'कृपया OSdweeb के उत्तर को स्वीकार करें। मेरी बजाय। यद्यपि आपको पुनरारंभ करना है, यह एक सुरुचिपूर्ण और डिफ़ॉल्ट विधि है और यह 10.9 / 10.10 के लिए और शायद बाद में अधिक विश्वसनीय परिणाम देता है। रैम डिस्क मैक ओएस एक्स के लिए 10.8 तक अच्छी तरह से काम करता है बिना सिस्टम फ़ाइलों के पुनरारंभ और छेड़छाड़ के।
कालोनोमथ

जवाबों:


25

RAM को बाहर निकालने, RAM डिस्क बनाने या VM का उपयोग करने की कोई आवश्यकता नहीं है। बस बूट maxmem=फ्लैग वैल्यू का उपयोग करके ओएस बूट करें जो इस उद्देश्य के लिए बनाया गया है और दशकों से आसपास है।

बस एक sudoer के रूप में टर्मिनल खोलें और दर्ज करें

sudo nano /Library/Preferences/SystemConfiguration/com.apple.Boot.plist

अपना पासवर्ड बदलने के बाद

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
        <key>Kernel Flags</key>
        <string></string>
</dict>
</plist>

सेवा मेरे

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs$
<plist version="1.0">
<dict>
        <key>Kernel Flags</key>
        <string>maxmem=2048</string>
</dict>
</plist>

और ctrloनैनो के साथ डिस्क छोड़ने और छोड़ने के लिए परिवर्तन लिखेंctrlx

परिवर्तनों को लागू करने के लिए अपने मैक को पुनरारंभ करें।

फिर से परिवर्तन के लिए नैनो के साथ 'मैक्सम = 2048' को हटा दें।


2
मेरा दिमाग एक पुराना कचरा है ... कल मैंने इस आसान समाधान को नरक या उच्च पानी में खोजने की कोशिश की - और मुझे पता था कि यह मौजूद है - लेकिन मुझे यह याद नहीं था।
कालोनोमथ

1
बस इस तरह से: आप पंजीकरण को बेहतर ढंग से पूरा करेंगे, अन्यथा यदि आप गलती से अपनी कुकीज़ खो देते हैं, तो आप अपने खाते में लॉग इन नहीं कर पाएंगे।
nicael

हालांकि यह जवाब, जैसा कि 4 अप्रैल 15 को लिखा गया है, ने शायद OS X 10.10 Yosemite के माध्यम से OS X पर काम किया होगा; हालाँकि, यह अब OS X 10.11 El Capitan पर काम नहीं करता है और बाद में जब तक कि सिस्टम इंटीग्रिटी प्रोटेक्शन को पहले निष्क्रिय नहीं कर देता। El Capitan में सिस्टम इंटीग्रिटी प्रोटेक्शन को कैसे संशोधित करें, देखें और जबकि इसके निर्देश El Capitan के लिए हैं, फिर भी, वही मूल निर्देश macOS के नए संस्करणों के लिए लागू होते हैं।
user3439894

14

सिस्टम और रनिंग एप्लिकेशन के लिए उपलब्ध रैम को कम करने के लिए आकार 2 GiB के साथ बस एक RAM डिस्क बनाएं।

इस तरह की डिस्क बनाने के लिए आवश्यक संख्याओं को प्राप्त करने के लिए, गुणा करें (एमबी में रैमडिस्काइज़ करें) * 2048। आपके उदाहरण में यह 2048 * 2048 = 4194304 है।

फिर टर्मिनल खोलें और दर्ज करें:

diskutil erasevolume HFS+ 'RAM Disk' `hdiutil attach -nomount ram://4194304`

आपको एक जैसा संदेश मिलेगा:

Started erase on disk9  
Unmounting disk  
Erasing  
Initialized /dev/rdisk9 as a 2 GB HFS Plus volume  
Mounting disk  
Finished erase on disk9 RAM Disk  

फिर dd और वॉल्यूम का पथ प्रयोग करें और डिस्क को यादृच्छिक डेटा से भरें:

dd if=/dev/random of=/Volumes/RAM\ Disk/random.dat bs=1024k

जब तक यह क्षमता से भरा नहीं होता है तब तक कमांड रैम डिस्क वॉल्यूम में फ़ाइल में random.dat को यादृच्छिक डेटा का 1 MiB हिस्सा लिखेगा।

जब तक आप रैम डिस्क को अनमाउंट नहीं करते हैं या अपने मैक को पुनरारंभ नहीं करते हैं, तब तक यह आपके उपलब्ध रैम को ~ 2 GiB से कम कर सकता है।

कुछ परीक्षण के बाद यह पुराने सिस्टम की तरह मज़बूती से काम नहीं करता है। कारण नवीनतम सिस्टम (10.9 और ऊपर) में नया मेमोरी मैनेजमेंट है।
रैम डिस्क द्वारा उपयोग की जाने वाली मेमोरी को डिस्क पर स्वैप नहीं किया जाना चाहिए, लेकिन यादृच्छिक डेटा फ़ाइल की गुणवत्ता के आधार पर इसे थोड़ा संकुचित किया जा सकता है। अधिक यथार्थवादी चित्र प्राप्त करने के लिए आप रैम डिस्क का आकार 5-10% बढ़ाकर ~ 2.1 जीबी कर सकते हैं।


यदि आप इसे 10.5-10.8 में करना चाहते हैं, तो निम्न कमांड एक विश्वसनीय परिणाम प्राप्त करने के लिए पर्याप्त है (डिस्क पहचानकर्ता को diskutil...कमांड के आउटपुट की जांच करने के लिए ):

dd if=/dev/zero of=/dev/rdisk9 bs=1m

शांत समाधान! अगर मुझे सही तरह से समझ में आ गया है कि मैंने एक RAM डिस्क के लिए 2 gigs RAM का उपयोग किया है। उस 2 g RAM का RAM आवंटित किया गया है, लेकिन, जब से मैं किसी भी चीज़ के लिए RAM डिस्क का उपयोग नहीं कर रहा हूँ, यह वास्तव में किसी भी संसाधित द्वारा एक्सेस नहीं किया जा रहा है। अगर मेरे पास वर्चुअल मेमोरी है, तो क्या ओ एस एस मेरे अप्रयुक्त ब्लॉक को मेरे स्वैपफाइल में नहीं लिखेगा, प्रभावी रूप से 2 पिग्स को फिर से मुक्त करेगा?
dB '

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

आप शायद डिस्क आकार की सभी गणनाओं को डंप कर सकते हैं और dd को पूरी डिस्क को भरने दे सकते हैं:dd if=/dev/random of=/Volumes/RAM\ Disk/random.dat bs=1024k
Josh

@ जोश मैं फिर से कोशिश करूँगा और अपने जवाब को संशोधित करूँगा अगर यह काम करता है। कल मुझे एक वीएम में कमांड को निष्पादित करने में समस्याएं थीं। मुझे सिर्फ एक 'संसाधन व्यस्त' त्रुटि मिली और कुछ भी मात्रा में नहीं लिखा गया था।
कालोनोमथ

यदि आप किसी फ़ाइल पर लिख रहे हैं of=/Volumes/RAM\ Disk/random.dat, तो आपको ठीक होना चाहिए। यदि आप डिस्क पर लिख रहे हैं of=/dev/rdisk9, तो आपको रूट करना होगा, और इसे अनमाउंट करना होगा। (यह असम्बद्ध होना चाहिए, अन्यथा सिस्टम भ्रमित हो जाएगा)
जोश

8

हां - memory_pressureसिस्टम में वास्तविक मेमोरी दबाव लागू करने के लिए उपकरण का उपयोग करें ।

यह वर्चुअल मेमोरी ट्यूनिंग के बाद से मेमोरी चिप को हटाने के लिए एक सही सादृश्य नहीं है, अभी भी पता है कि 4 जीबी या रैम है और -p प्रतिशत_फ्री तर्क रैम की एक निरंतर राशि आवंटित नहीं करेगा, लेकिन सिस्टम को एक्स प्रतिशत मुक्त रखें।

यह आपको बहुत जल्दी यह देखने की अनुमति दे सकता है कि क्या आपका कार्यभार 2 जीबी रैम के साथ सिस्टम के अपूर्ण होने पर भी असंगत है।

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


भौतिक चिप को हटाने के साथ मुझे जो मुख्य समस्या दिखाई देती है वह यह है कि दोहरी चैनल मोड को चित्र से हटा दिया जाता है, भी। इस उत्तर में पहला विकल्प ऐसा करने के लिए बेहतर तरीका लगता है क्योंकि वास्तविक प्रदर्शन के मुद्दे बस बढ़े हुए उपयोग से आते हैं।
thebluefish

3

OSdweeb के उत्तर में जोड़ना:

चूंकि com.apple.Boot.plistसिस्टम की इंटीग्रिटी प्रोटोकॉल (SIP) (इस थ्रेड को देखें) को अक्षम करने पर एल कैपिटन संपादन फ़ाइल संभव है ।

हालाँकि, आप निम्न कमांड के साथ बूट फ्लैग सेट कर सकते हैं:

sudo nvram boot-args="maxmem=2048"


2

एक अन्य उपाय यह होगा कि लो-रैम मैक का अनुकरण करने के लिए वर्चुअल मशीन का उपयोग किया जाए। VMWare Fusion, Parallels, या VirtualBox स्थापित करें (यदि आप साहसी हैं) और उस में OS X स्थापित करें। फिर आप OS X के लिए उपलब्ध कोर की संख्या, डिस्क स्थान की मात्रा, और (जैसा कि आप अनुरोध कर रहे थे) की मात्रा में हेरफेर कर सकते हैं। । अन्य दो उत्पादों में क्रमशः 30-दिन और 14-दिवसीय परीक्षण हैं।


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

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

यदि आप एंटरप्राइज़ ग्रेड वर्चुअलाइजेशन जैसे VMWare ESXi के बारे में बात कर रहे हैं, तो आप सही @phyrfox - CPU गति के बारे में हैं । वहाँ ग्राफिक्स और वीडियो प्रसंस्करण पर एक प्रदर्शन हिट जो ध्यान देने योग्य हो जाएगा, तो उनका प्रदर्शन मैक ओएस एक्स मैं मानता हूँ, वर्चुअलाइजेशन है है सही समाधान है जब आप सीपीयू आवृत्ति, उपलब्ध कोर, हार्डवेयर, आदि को समायोजित करना चाहते लेकिन इस सवाल का सीमित करने के बारे में विशुद्ध रूप से था उपलब्ध रैम, और उस उपयोग के मामले में मेरा मानना ​​है कि वर्चुअलाइजेशन सही समाधान नहीं है।
जोश

-1

OUT RAM लेने के लिए, आप कर सकते हैं:

यदि आपकी मैकबुक एल्युमिनियम है, तो आप पूरी तरह से नीचे की तरफ ले जाते हैं और रैम को बीच में सही स्मैक होना चाहिए।

यदि यह सफेद है, तो कोने में थोड़ा डिब्बे लें और उस तरह से राम तक पहुंचें।

स्रोत: https://support.apple.com/en-ca/HT1651


1
ध्यान दें कि वह राम को शारीरिक रूप से हटाने के बिना इसे अक्षम करने के लिए कहता है।
स्पॉटलाइट

वह अभी भी अपनी समस्या को हल कर सकता है कि मेरा क्या मतलब है ...
काचामेनस

2
लेकिन सवाल यह था, "क्या चिप को शारीरिक रूप से हटाने के बिना रैम को अस्थायी रूप से अक्षम करने का कोई तरीका है?", इसलिए इस सवाल का जवाब नहीं है
जोश

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