रिस्टार्ट किए बिना मैन्युअल रूप से स्वैप स्पेस कैसे खाली करें?


17

मैं एसएसडी के साथ 16 जीबी रैम के साथ मैकबुक प्रो पर हाई सिएरा पर हूं।

15G स्वैप फाइलें मिलीं, क्या स्वैप स्पेस / फाइल्स को बिना रिस्टार्ट करने का कोई तरीका है?

$ sysctl -a | grep swap
vm.swapusage: total = 15360.00M  used = 14468.75M  free = 891.25M  (encrypted)
vm.compressor_swapout_target_age: 0
vm.swapfileprefix: /private/var/vm/swapfile
debug.intel.swapCount: 0
$ ll -h /var/vm/swap*
-rw------- 1 root wheel 1.0G Apr 30 16:10 /var/vm/swapfile0
-rw------- 1 root wheel 1.0G Apr 30 17:16 /var/vm/swapfile1
-rw------- 1 root wheel 1.0G May 11 21:28 /var/vm/swapfile10
-rw------- 1 root wheel 1.0G May 11 21:46 /var/vm/swapfile11
-rw------- 1 root wheel 1.0G May 11 22:04 /var/vm/swapfile12
-rw------- 1 root wheel 1.0G May 11 23:00 /var/vm/swapfile13
-rw------- 1 root wheel 1.0G May 11 23:01 /var/vm/swapfile14
-rw------- 1 root wheel 1.0G May 11 23:02 /var/vm/swapfile15
-rw------- 1 root wheel 1.0G May  2 12:45 /var/vm/swapfile2
-rw------- 1 root wheel 1.0G May  4 14:02 /var/vm/swapfile3
-rw------- 1 root wheel 1.0G May  4 05:50 /var/vm/swapfile4
-rw------- 1 root wheel 1.0G May  8 11:05 /var/vm/swapfile5
-rw------- 1 root wheel 1.0G May  9 16:18 /var/vm/swapfile6
-rw------- 1 root wheel 1.0G May 10 03:02 /var/vm/swapfile7
-rw------- 1 root wheel 1.0G May 11 13:03 /var/vm/swapfile8
-rw------- 1 root wheel 1.0G May 11 21:07 /var/vm/swapfile9

मैं किसी तरह इन फ़ाइलों को अक्षम किए बिना छोड़ना चाहूंगा dynamic_pager


मैंने कोशिश की है:

  • रन sudo purge(बल डिस्क कैश को शुद्ध किया जाना);
  • उन सभी ऐप्स को छोड़ दें जिनका मैं उपयोग नहीं कर रहा हूं;
  • उनके द्वारा बनाए जाने से पहले डमी स्वैप फाइल बनाकर सिस्टम को ट्रिक करें:

    cd /var/vm
    sudo touch swapfile{0..20} 2>/dev/null; sudo chmod 000 swapfile{0..20} 2>/dev/null
    

    लेकिन यह काम नहीं किया, क्योंकि सिस्टम अभी भी 000अनुमति के बावजूद फ़ाइलों को बनाता / बदलता है , अजीब है।

किसी कारण से, htopवर्चुअल मेमोरी को 532G के रूप में दिखाता है, लेकिन मेरा मानना ​​है कि यह एक बग है, जैसा topकि कम इस्तेमाल किया जा रहा है।

htop बनाम टॉप, PID USER PRI NI VIRT RES S CPU% MEM% TIME + कमांड, स्वैप, मेमोरी, CPU, macOS

ऊपर htop/ topकेवल चलने वाले 2 कार्य दिखाता है, 445 सो रहे हैं, CPU का उपयोग इतना अधिक नहीं है, लेकिन कर्नेल 15G फ़ाइलों के बीच स्वैपिंग में व्यस्त है।

मैं इसे पुनः आरंभ कर सकता था लेकिन कुछ दिनों के बाद यह समस्या हर हफ्ते दोहराई जाती थी। आदर्श रूप से, मैं फ़ाइलों को स्वैप और नष्ट (नष्ट) करना चाहता हूं और फिर से उसी रन पर शुरू करना चाहता हूं, लेकिन macOS मुझे ऐसा करने की अनुमति नहीं देता है।

$ sudo rm -fr swapfile*
Password:
rm: cannot remove 'swapfile0': Operation not permitted

क्या dynamic_pagerइन फ़ाइलों को छोड़ने के लिए कोई हैक उपलब्ध है ? मुझे उतनी जरूरत नहीं है

Btw। ये स्वैप फाइलें खाली हैं! देख:

$ sudo strings swapfile*
swapfile0
swapfile1
swapfile10
swapfile11
swapfile12
swapfile13
swapfile2
swapfile3
swapfile4
swapfile5
swapfile6
swapfile7
swapfile8
swapfile9
/var/vm$ sudo gzip swapfile*
/var/vm $ ll -h *.gz
-rw------- 1 root wheel 1.6M Apr 30 16:10 swapfile0.gz
-rw------- 1 root wheel 1.6M Apr 30 17:16 swapfile1.gz
-rw------- 1 root wheel 1.6M May 11 21:28 swapfile10.gz
-rw------- 1 root wheel 1.6M May 11 21:46 swapfile11.gz
-rw------- 1 root wheel 1.6M May 11 22:04 swapfile12.gz
-rw------- 1 root wheel 1.6M May 11 23:00 swapfile13.gz
-rw------- 1 root wheel 1.6M May  2 12:45 swapfile2.gz
-rw------- 1 root wheel 1.6M May  4 14:02 swapfile3.gz
-rw------- 1 root wheel 1.6M May  4 05:50 swapfile4.gz
-rw------- 1 root wheel 1.6M May  8 11:05 swapfile5.gz
-rw------- 1 root wheel 1.6M May  9 16:18 swapfile6.gz
-rw------- 1 root wheel 1.6M May 10 03:02 swapfile7.gz
-rw------- 1 root wheel 1.6M May 11 13:03 swapfile8.gz
-rw------- 1 root wheel 1.6M May 11 21:07 swapfile9.gz

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

उदाहरण के लिए, इस पोस्ट को लिखने से पहले, मेरे पास 13G स्वैप फाइलें (1G प्रत्येक) थीं, अपने लेखन के दौरान और आउटपुट से ऊपर चिपकाने के बाद मैं 15G (लगभग कुछ भी नहीं करके) समाप्त हो गया, तब macOS वास्तव में हटा दिया गया swapfile14और swapfile15(इसलिए 13G ऑफ स्वैप) यह लिख रहा हूं। फिर swapfile13यह वाक्य लिखते समय हटा दिया गया । swapfile16इस वाक्य को लिखते समय (16G) तक बनाया गया । और swapfile16यह वाक्य लिखते समय फिर हटा दिया । और इसी तरह। क्या झंझट है। अगर ये खाली फाइलें हैं, तो macOS इन्हें क्यों बना रहा है, जब इसमें कुछ भी नहीं भरा था।


अन्य सूचना:

$ sudo launchctl list | grep pager
-   0   com.apple.dynamic_pager
$ launchctl print system | grep dynamic_pager
               0      0     com.apple.dynamic_pager
$ ps wuax | grep dynamic_pager
# No running?!
$ launchctl dumpstate | grep -A20 com.apple.dynamic_pager
               0      0     com.apple.dynamic_pager
--
com.apple.dynamic_pager = {
    active count = 0
    path = /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist
    state = waiting

    program = /sbin/dynamic_pager
    arguments = {
        /sbin/dynamic_pager
    }

    default environment = {
        PATH => /usr/bin:/bin:/usr/sbin:/sbin
    }

    environment = {
        XPC_SERVICE_NAME => com.apple.dynamic_pager
    }

    domain = com.apple.xpc.launchd.domain.system
    minimum runtime = 10
    exit timeout = 5
    runs = 1
    successive crashes = 0
    excessive crashing = 0
    last exit code = 0

यहां WindowServerप्रक्रिया का 1-सेकंड नमूना है , जहां स्वैप पर कम से कम आधा सेकंड खर्च किया गया था:

Command:         WindowServer
Parent:          launchd [1]
Duration:        1.01s
Steps:           10 (100ms sampling interval)
Active cpus:     8
Fan speed:       2159 rpm

  Thread 0x1ab              Thread name "VM_cswap_trigger"                      10 samples (1-10)         priority 91 (base 91)     cpu time 0.222s
  <IO tier 0>
 *10  call_continuation + 23 (kernel + 2098423) [0xffffff80004004f7] 1-10
   *10  ??? (kernel + 2882629) [0xffffff80004bfc45] 1-10
     *6  ??? (kernel + 2883102) [0xffffff80004bfe1e] 1-6
       *6  thread_block_reason + 175 (kernel + 2530911) [0xffffff8000469e5f] 1-6
         *6  ??? (kernel + 2534903) [0xffffff800046adf7] 1-6
           *6  machine_switch_context + 205 (kernel + 3578125) [0xffffff800056990d] 1-6
     *1  ??? (kernel + 2883122) [0xffffff80004bfe32] 7
       *1  ??? (kernel + 2885317) [0xffffff80004c06c5] 7
         *1  c_seg_do_minor_compaction_and_unlock + 303 (kernel + 2886351) [0xffffff80004c0acf] 7
           *1  c_seg_minor_compaction_and_unlock + 344 (kernel + 2887576) [0xffffff80004c0f98] (running) 7
     *2  ??? (kernel + 2883102) [0xffffff80004bfe1e] 8-9
       *2  thread_block_reason + 175 (kernel + 2530911) [0xffffff8000469e5f] 8-9
         *2  ??? (kernel + 2534903) [0xffffff800046adf7] 8-9
           *2  machine_switch_context + 205 (kernel + 3578125) [0xffffff800056990d] 8-9
     *1  ??? (kernel + 2883122) [0xffffff80004bfe32] 10
       *1  ??? (kernel + 2885317) [0xffffff80004c06c5] 10
         *1  c_seg_do_minor_compaction_and_unlock + 303 (kernel + 2886351) [0xffffff80004c0acf] 10
           *1  c_seg_minor_compaction_and_unlock + 633 (kernel + 2887865) [0xffffff80004c10b9] 10
             *1  kernel_memory_depopulate + 194 (kernel + 2976354) [0xffffff80004d6a62] 10
               *1  pmap_remove_options + 1124 (kernel + 3488404) [0xffffff8000553a94] 10
                 *1  pmap_remove_range_options + 1988 (kernel + 3485812) [0xffffff8000553074] (running) 10

  Thread 0x1ac              Thread name "VM_compressor"                         10 samples (1-10)         priority 91 (base 91)     cpu time 0.201s
  <IO tier 0>
 *6  call_continuation + 23 (kernel + 2098423) [0xffffff80004004f7] 1-6
   *6  vm_pageout_iothread_internal_continue + 1129 (kernel + 3134345) [0xffffff80004fd389] 1-6
     *6  vm_pageout_compress_page + 268 (kernel + 3135052) [0xffffff80004fd64c] 1-6
       *6  vm_compressor_pager_put + 160 (kernel + 2903904) [0xffffff80004c4f60] 1-6
         *6  vm_compressor_put + 1389 (kernel + 2900045) [0xffffff80004c404d] 1-6
           *1  WKdm_compress_new + 736 (kernel + 2092960) [0xffffff80003fefa0] (running) 1
           *1  WKdm_compress_new + 776 (kernel + 2093000) [0xffffff80003fefc8] (running) 2
           *1  WKdm_compress_new + 781 (kernel + 2093005) [0xffffff80003fefcd] (running) 3
           *1  WKdm_compress_new + 303 (kernel + 2092527) [0xffffff80003fedef] (running) 4
           *1  WKdm_compress_new + 748 (kernel + 2092972) [0xffffff80003fefac] (running) 5
           *1  WKdm_compress_new + 771 (kernel + 2092995) [0xffffff80003fefc3] (running) 6
 *1  vm_pageout_iothread_internal_continue + 0 (kernel + 3133216) [0xffffff80004fcf20] 7
 *1  call_continuation + 23 (kernel + 2098423) [0xffffff80004004f7] 8
   *1  vm_pageout_iothread_internal_continue + 1129 (kernel + 3134345) [0xffffff80004fd389] 8
     *1  vm_pageout_compress_page + 268 (kernel + 3135052) [0xffffff80004fd64c] 8
       *1  vm_compressor_pager_put + 127 (kernel + 2903871) [0xffffff80004c4f3f] (running) 8
 *2  vm_pageout_iothread_internal_continue + 0 (kernel + 3133216) [0xffffff80004fcf20] 9-10

  Thread 0x1ad              Thread name "VM_compressor"                         10 samples (1-10)         priority 91 (base 91)     cpu time 0.144s
  <IO tier 0>
 *3  call_continuation + 23 (kernel + 2098423) [0xffffff80004004f7] 1-3
   *3  vm_pageout_iothread_internal_continue + 1129 (kernel + 3134345) [0xffffff80004fd389] 1-3
     *3  vm_pageout_compress_page + 268 (kernel + 3135052) [0xffffff80004fd64c] 1-3
       *3  vm_compressor_pager_put + 160 (kernel + 2903904) [0xffffff80004c4f60] 1-3
         *3  vm_compressor_put + 1389 (kernel + 2900045) [0xffffff80004c404d] 1-3
           *1  WKdm_compress_new + 280 (kernel + 2092504) [0xffffff80003fedd8] (running) 1
           *1  WKdm_compress_new + 286 (kernel + 2092510) [0xffffff80003fedde] (running) 2
           *1  WKdm_compress_new + 309 (kernel + 2092533) [0xffffff80003fedf5] (running) 3
 *1  vm_pageout_iothread_internal_continue + 0 (kernel + 3133216) [0xffffff80004fcf20] 4
 *2  call_continuation + 23 (kernel + 2098423) [0xffffff80004004f7] 5-6
   *1  vm_pageout_iothread_internal_continue + 1187 (kernel + 3134403) [0xffffff80004fd3c3] 5
     *1  vm_page_free_list + 124 (kernel + 3219628) [0xffffff80005120ac] 5
       *1  vm_page_free_prepare_object + 146 (kernel + 3207826) [0xffffff800050f292] (running) 5
   *1  vm_pageout_iothread_internal_continue + 1129 (kernel + 3134345) [0xffffff80004fd389] 6
     *1  vm_pageout_compress_page + 304 (kernel + 3135088) [0xffffff80004fd670] (running) 6
 *4  vm_pageout_iothread_internal_continue + 0 (kernel + 3133216) [0xffffff80004fcf20] 7-10

आप केवल अपने कार्यों को शीर्ष में दिखाते हैं जो अन्य उपयोगकर्ताओं के बारे में है। गतिविधि मॉनीटर क्या दिखाता है?
user151019

@kenorb क्या आपको एक उत्तर मिला? उच्च स्वैप एकमात्र कारण है जिसे मैकोस को फिर से शुरू करने की आवश्यकता है। इस सवाल को उठाकर 100x।
वेड विलियम्स

जवाबों:


7

वर्कअराउंड के लिए, WindowServer प्रक्रिया को अस्थायी रूप से मदद करने के लिए पुनः आरंभ / मारना:

# sudo pkill -HUP -u _windowserver

हालांकि, यह सभी प्रक्रियाओं को मार देगा, आपको लॉग आउट करेगा और सभी विंडो को फिर से खोल देगा, इसलिए इसका उपयोग केवल तब करें जब आपका सिस्टम बहुत खराब आकार में हो। हालाँकि, इसने फिर से नियंत्रण से बाहर होने तक (बिना कम से कम कुछ समय के लिए) सभी स्वेपाइल्स को साफ / हटा दिया।


मॉनिटर करने के लिए, इन स्वैप फ़ाइलों को बनाने / अपडेट करने के लिए, चलाएं:

$ sudo fs_usage | grep swapfile

या पेज इन्स / आउट, रन के लिए:

$ sudo fs_usage | grep PAGE_

यह देखने के लिए कि क्या WindowServerप्रक्रिया ठीक से चल रही है, दौड़ें:

$ sudo spindump -reveal $(pgrep WindowServer)

या के लिए kernel_task, भागो:

$ sudo spindump -reveal 0

1
WindowServer को मारना मेरे लिए काम नहीं आया। विंडो सर्वर को मारने के बाद स्वैप 600GB और 150GB तक कम हो गया था। दुर्भाग्य से, केवल एक चीज जो स्वैप को शून्य करती है वह फिर से शुरू होती है।
DuckDucking
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.