কীভাবে উবুন্টুর ভার্চুয়াল মেমরি বাড়াতে বা / বা মতলবের জন্য অদলবদল?


16

পরিস্থিতি: Out of Memoryউবুন্টুর মতলব
গোলের ত্রুটিগুলি ঠিক করুন: বাহ্যিক এইচডিডি / এসএসডিতে কিছু ভার্চুয়াল মেমরি এবং / অথবা অদলবদল বরাদ্দ করুন; পঠন / লেখার পরিমাণ 20 জিবিপিএস থেকে 0.1 গিগাবাইটে হ্রাস পেয়েছে, যা ঠিক আছে!
পরিভাষা: এখানে অদলবদল এবং ভার্চুয়াল মেমরি

না, অদলবদল এবং ভার্চুয়াল মেমরি সম্পূর্ণ আলাদা। উদাহরণস্বরূপ, 1 জিবি ফাইল মেমরি ম্যাপিংয়ে অতিরিক্ত 1 গিগাবাইট ভার্চুয়াল মেমরি ব্যবহার করা হয় তবে অদলবদলের ব্যবহারের কোনও পরিবর্তন হয় না। অদলবদল ব্যাকিং স্টোরের একটি রূপ। ভার্চুয়াল মেমরির অনেকগুলি ব্যবহারের ব্যাকিং স্টোরের সাথে কোনও সম্পর্ক নেই। (এবং ভার্চুয়াল মেমরির সাথে এমন কোনও সিস্টেম রয়েছে যা কোনও স্ব্যুপের পাশাপাশি অদলবদলযুক্ত সিস্টেম রয়েছে তবে ভার্চুয়াল মেমরি নেই no)

গ্রাহক হার্ডওয়্যার সীমিত তাই আমার আরও বাহ্যিক মেমরি এবং / অথবা আমার বাহ্যিক এইচডিডি ব্যবহার করতে হবে। মতলব অদলবদলের স্মৃতি সম্পর্কে বলেছেন (ভার্চুয়াল মেমরি বাদ দিয়ে টোডো?)

লিনাক্স সিস্টেম - mkswapএবং swaponকমান্ড ব্যবহার করে আপনার অদলবদল পরিবর্তন করুন ।

সিস্টেমের বৈশিষ্ট্য

  • আপনি এটি দ্বারা কতটা আছে তা দেখতে পারেন can swapon -s

    Filename                Type        Size    Used    Priority
    /dev/sda3               partition   8326140 0       -1
    
  • মতলব এর কনফিগারেশন

    % /programming//a/35971040/54964
    com.mathworks.services.Prefs.setIntegerPref('JavaMemHeapMax', 2048); % MB
    
    % TODO cannot find ways how to put Matlab use /dev/sda3
    
  • সুতরাং আপনি দেখতে পাচ্ছেন যে আমার মতলব এটি ব্যবহার করছে না। আমি Out of Memoryমতলব-এ বড় ম্যাট্রিক নিয়ে ত্রুটি পেয়েছি । আমি reshapeভেক্টরগুলিতে ম্যাট্রিক লিখতে এবং সমান্তরাল কোড লিখতে ব্যর্থ হয়েছি । সুতরাং আমি ভার্চুয়াল মেমরিটি ব্যবহার করতে চাই কারণ আমার কাজ শেষ করা দরকার; হার কোন ব্যাপার না।

সুডোকোড

  1. শেল স্ক্রিপ্ট যা একটি সোয়াপ তৈরি করে, ম্যাটল্যাব শুরু করবে, এবং ম্যাটল্যাবটি প্রস্থান করলে সোয়াপ মুছবে। ( মাইকেলহোরম্যান )
  2. বাহ্যিক এইচডিডি তে অদলবদল সক্ষম করুন। sudo swapon -aএখানে কিভাবে ব্যবহার করবেন ?
  3. মতলব শুরু করুন।
  4. মতলবকে অদলবদল করুন।
  5. মতলব প্রস্থান করার সময় অদলবদু মুছুন।

অস্থায়ী অদলবদল, রানিং ক্লায়েন্ট এবং ক্লাইজিং / মাইকেল এর স্ক্রিপ্টে অদলবদল অপসারণ

পরিস্থিতি : পরিবেশ স্থাপনের ক্ষেত্রে ত্রুটিগুলি নিয়ন্ত্রণ করতে পারে না (1), মতলব (2) চালানো এবং পরিবেশ বন্ধ করতে (3)
স্ক্রিপ্ট

#!/usr/bin/env bash

# /programming//a/69808/54964
set -e 
# TODO How to do swapoff if any error?

SWAP_FILE="/media/masi/SamiSwapVirtual/.swap_file_20.7.2016"
SIZE_MB=16000
TO_RUN="matlab"

dd if="/dev/zero" of=${SWAP_FILE} bs="1M" count=${SIZE_MB} status="progress"
mkswap ${SWAP_FILE}
chmod 0600 ${SWAP_FILE}
sudo chown 0.0 ${SWAP_FILE} # /unix//a/297153/16920
sudo swapon -v ${SWAP_FILE}
echo "Swap enabled. Press enter to continue"; read
${TO_RUN}
echo "I will remove the swap. Press enter to continue"; read
sudo swapoff -v ${SWAP_FILE}
rm -vf ${SWAP_FILE}

ট্রান্সসেন্ড 25 এম 3 1 টিবি সহ আইট্রেশন 1 যেখানে ফাইল সিস্টেম রয়েছে little ext4

  1. স্ক্রিপ্ট শুরু করার পরে লগ হয়

    sh start_matlab_with_swap.sh 
    16000+0 records in
    16000+0 records out
    16777216000 bytes (17 GB, 16 GiB) copied, 134.489 s, 125 MB/s
    Setting up swapspace version 1, size = 15.6 GiB (16777211904 bytes)
    no label, UUID=48c2835b-4499-4534-aa49-0648e15bd5d9
    [sudo] password for masi: 
    swapon /media/masi/SamiWeek/tmp/swap_file_18.7.2016
    swapon: /media/masi/SamiWeek/tmp/swap_file_18.7.2016: insecure file owner 1000, 0 (root) suggested.
    swapon: /media/masi/SamiWeek/tmp/swap_file_18.7.2016: found swap signature: version 1d, page-size 4, same byte order
    swapon: /media/masi/SamiWeek/tmp/swap_file_18.7.2016: pagesize=4096, swapsize=16777216000, devsize=16777216000
    Swap enabled. Press enter to continue
    start_matlab_with_swap.sh: 11: read: arg count
    
  2. ক্লায়েন্ট চালাচ্ছি

    • কমান্ডের ইতিহাস মতলবটির প্রথম সূচনায় অদলবদল মেমরির (টিকিট # 02075943) ত্রুটি সহ চলে গেছে - আপনার কমান্ডের ইতিহাস পড়তে সমস্যা হয়েছিল - - । কেবল আপনার মতলব পুনরায় চালু করুন এবং আপনার ডিফল্ট সেটিংস থাকলে সমস্যাটি সমাধান করা হবে। কমান্ড prefdirদেয় /home/masi/.matlab/R2016aযা পূর্বনির্ধারিত অবস্থান ( /home/{username}/.matlab/R2016a। ফাইল /home/masi/.matlab/R2016a/matlab.prfপুনরায় আরম্ভের পরে এখানে উপস্থিত আছে

    • ... [অন্যান্য ত্রুটি] ...

  3. মাতলাব বন্ধ করে আবার টার্মিনালে পাসওয়ার্ড টাইপ করা

    [sudo] password for masi: 
    swapoff /media/masi/SamiWeek/tmp/swap_file_18.7.2016
    [ bugs here! ]
    

উন্মুক্ত: এখানে ত্রুটি ট্র্যাপিংয়ের আরও ভাল ত্রুটি-পরিচালনা কীভাবে প্রয়োগ করবেন? উত্সে উদাহরণের জন্য আমার স্ক্রিপ্ট দেখুন। থ্রেড ত্রুটি / সতর্কতা হলে কীভাবে ত্রুটি-ফাঁদে ফেলা এবং স্বঅফফ করবেন?

স্থায়ী অদলবদল = চলমান ক্লায়েন্ট থেকে পৃথক অদলবদল সেটআপ

অদলবদল সেট আপ করা হচ্ছে

# /unix//q/297767/16920
masi@masi:~$ sudo fallocate -l 20G /mnt/.swapfile

masi@masi:~$ sudo mkswap /mnt/.swapfile 
Setting up swapspace version 1, size = 20 GiB (21474832384 bytes)
no label, UUID=45df9e48-1760-47e8-84d7-7a14f56bbd72

masi@masi:~$ sudo swapon /mnt/.swapfile
swapon: /mnt/.swapfile: insecure permissions 0644, 0600 suggested.

masi@masi:~$ sudo chmod 600 /mnt/.swapfile

masi@masi:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:           7925        1494         175         196        6255        5892
Swap:         28610           0       28610

/etc/fstabস্থায়ী পরিবর্তনের জন্য নিম্নলিখিতটি রাখুন

# /unix//a/298212/16920
# /unix//a/298543/16920

# If swap is on SSD, trim blocks each time at startup.
#/mnt/.swapfile  none    swap    defaults,discard      0        0

# If swap on External HDD, just use sw.
/media/masi/SamiWeek/.swapfile  none    swap    sw      0        0

সিস্টেম: লিনাক্স উবুন্টু 16.04 64 বিট
লিনাক্স কার্নেল: 4.6
লিনাক্স কার্নেল বিকল্পগুলি:
ডাব্লুএল মতলব: 2016a
অফিশিয়াল মতলব ডক্স: "মেমরির আউট" ত্রুটিগুলি সমাধান করুন
বহিরাগত এইচডিডি: 1 টিবি স্টোরজেট 25 এম 3 পর্যালোচনা ছাড়ুন , 2 টিবি স্টোরজেট 25M3
বহিরাগত এইচডিডি ফাইল সিস্টেমটি ছাড়ুন : ext4
বাহ্যিক এইচডিডি বাফার: 8 এমবি
সম্পর্কিত থ্রেড: উবুন্টুতে ম্যাটল্যাব মেমরির সীমাবদ্ধতা কীভাবে বাড়ানো যায়? (এমএটিসপ্প, এমএটিএলবি'র জন্য স্বপন কীভাবে ব্যবহার করবেন?) , মতলব কীভাবে শারীরিক স্মৃতি বৃদ্ধি করবেন? , মতলব-এ স্মৃতি ত্রুটির সমাধান কীভাবে করবেন? , 10800x10800 ম্যাট্রিক্সের জন্য মাতলাবে মেমরির ত্রুটিটি কীভাবে ঠিক করবেন? ,মতলব আর ২০১২ বিতে আমি কীভাবে মেমরির সীমা বাড়িয়ে তুলতে পারি (সামগ্রিক পাশাপাশি সামগ্রিক)? , অ্যারে ব্লক কীভাবে বাড়ানো যায় এবং মতলব 2009 বি-তে মেমরির ত্রুটিটি সমাধান করা যায়? , মতলব একটি ছোট পরিবর্তনশীল জন্য এই আউট অফ মেমরি ইস্যুর সমাধান কিভাবে? , মতলব-এ 'মেমরি অফ আউট'। একটি ধীর কিন্তু স্থায়ী সমাধান?


4
দুঃখিত, এটি প্রশ্নের উত্তর দিচ্ছে না। তবে আপনি কি এটি নিশ্চিত? অদলবদল থেকে গণনা করা অবিশ্বাস্যভাবে দীর্ঘ সময় নেয়। রাম প্রতি সেকেন্ডে কমপক্ষে 20 গিগাবাইট এ সার্চ, আপনার বাহ্যিক হার্ডডিস্ক কম 0.1 Gbps এ পড়া হবে
Anake

1
হ্যাঁ, আমি জানি। এইটা সমস্যা না. আমার কাছে বিশাল ম্যাট্রিক রয়েছে যা 32/64 গিগাবাইটের সাথে গণনা করা যেতে পারে তবে আমার বর্তমান 8 জিবি আল্ট্রাবুকের সাথে নয়। আমার এখনও ছুটির দিনগুলিতে গণনা করা দরকার।
লিও লোপোল্ড হার্টজ 준영

1
আর একটি অ-দরকারী মন্তব্য দুঃখিত। আপনি কী কম্পিউটারে বাড়িতে রেখে যেতে পারেন যাতে আপনি এসএসএইচ চালু করতে পারেন এবং সেগুলি বাড়িতে / ইউএনই চালাতে পারেন?
আনেকে

@ এখনই সম্ভব নয়, দুঃখিত, এই মুহূর্তে। এছাড়াও, মতলব এখানে তাই স্থানীয় গণনা প্রয়োজন। এছাড়াও, এই মুহুর্তে এটি করার জন্য পর্যাপ্ত কী নেই।
লিও লোপল্ড হার্টজ 준영

এই প্রসঙ্গে ম্যাটল্যাব সম্পর্কে বিশেষ কী? এটি কীভাবে অদলবদল বাড়ানোর
স্টিল্ড্রাইভার

উত্তর:


2

ঠিক আছে, আপনার কাছে বেশিরভাগ তালিকা রয়েছে। আমাকে ইনলাইন সাড়া দিন

  1. এখানে ত্রুটি ট্র্যাপিংয়ের আরও ভাল ত্রুটি-হ্যান্ডলিং কীভাবে প্রয়োগ করবেন? উত্সে উদাহরণের জন্য আমার স্ক্রিপ্ট দেখুন। ত্রুটি / সতর্কতা হলে কীভাবে ত্রুটি-ফাঁদে ফেলা এবং স্বপফ করতে হবে তা থ্রেড।

আমি এই স্ক্রিপ্টটির ধারণাটি মোটেই পছন্দ করি না। আপনার একটি বাহ্যিক হার্ডড্রাইভ রয়েছে যা আপনি স্ব্যাপ হিসাবে ব্যবহার করার চেষ্টা করছেন এটি একটি খারাপ ধারণা just আপনি যদি সত্যিই নিয়মিতভাবে এটি করতে চান তবে সঠিক swap পার্টিশনটি ভিতরে রাখার জন্য, অদলবদল ফাইল যুক্ত করতে বা একটি বড় অভ্যন্তরীণ ডিস্ক কেনার জন্য আপনার পার্টিশনগুলির আকার পরিবর্তন করুন।

  1. ম্যাট্রিক্সের আকার অদলবদলের চেয়ে বেশি হলে সতর্কতা কীভাবে রাখবেন?

শুধু গণিত না। আপনি যদি প্রোগ্রামটি শুরু হওয়ার আগে ম্যাট্রিক্সের আকার জানেন তবে তারপরে মাইবিতে আকারটি গণনা করুন এবং এটি উপলভ্য অদলবদলের সাথে তুলনা করুন।

  1. মতলব-এ আপনার বিশাল ম্যাট্রিক্স গণনায় কীভাবে একটি অগ্রগতি বার পাবেন?

মতলব একটি এপিআই অধিকার আছে? আমি মনে করি না যে এটি এই প্রশ্নের সঠিক ফোরাম। আপনার যদি একটি এপিআই ছিল, আপনি স্বীয় মাধ্যমে আইওতে অবরুদ্ধ হবেন তাই এটি কেবল ঝাঁকুনির অগ্রগতি বার হবে যা বাস্তবে বাস্তবতা প্রতিফলিত করে না।

  1. পুনরাবৃত্তিতে (2) কীভাবে ব্যস্ত অগ্রগতি এবং / অথবা স্বপন-গুলি / স্যুপ আপকে হত্যা করবেন?

আপনি না। আপনি কেবল গণনার সাথে কাজটি করার অর্থ এই নয় যে আপনার বরাদ্দকৃত সংস্থানগুলি দিয়ে অপারেটিং সিস্টেমটি সম্পন্ন হয়েছে। অদলবদল করার জন্য যখন এটি লেখা শেষ হয়ে যায়, তখন এটি মুক্ত হয়ে যায়। আপনি এত বেশি মেমরি গ্রাস করেছেন যে প্রচুর অ্যাপ্লিকেশন তাদের প্রয়োজনীয় মেমরিটি পেতে পারে না তাই তারাও অদলবদল ব্যবহার করছে। কেবল এটি ছেড়ে দিন এবং অপারেটিং সিস্টেমটি এটি করতে দিন। আপনি আপনার পরবর্তী রান করার আগে ক্যাশেগুলি সাফ করুন।

echo 3 > /proc/sys/vm/drop_caches 

এর চেয়ে সম্ভবত আরও কিছু আছে, আমি লিনাক্স ভিএম বিশেষজ্ঞ নই। এসএলএব / এসএলএবি বরাদ্দকারী কীভাবে কাজ করে এবং আপনার বৃহত মেমরির প্রয়োজনীয়তার জন্য এটি টিউন করতে পারে তা তদন্ত করা সার্থক হবে। আপনি ম্যাটলেব ম্যাটলব মেলোব করতে সক্ষম হতে পারেন। এটি আপনার জন্য স্মৃতি সংরক্ষণ করার জন্য ওএসকে বাধ্য করে, বা এটি শুরু হয় না, কাজ শেষ হয়ে গেলে আপনাকে এটিকে আনলক করতে হবে। আমি সিআই এপিআই দিয়ে এটি ঠিকঠাক করতে পারি তবে আমি নিশ্চিত না যে আপনি যে প্রক্রিয়াটি পুনরায় সংকলন করতে পারছেন না তার বাইরে আপনি কীভাবে এটি করবেন তা সম্পর্কে কিছু গবেষণা প্রয়োজন require

অবশেষে, এটি ইসি 2 এর জন্য তৈরি করা ধরণের জিনিস। দেখে মনে হচ্ছে 16G আপনার যা প্রয়োজন, একটি এম 4.4xlarge এর প্রতি ঘন্টা প্রতি ঘন্টা @ 95 0.958 রয়েছে G৪ জি র্যাম। এটি এক কাপ কফির চেয়ে কম। কোনও জুজু কবজ বা অনুরূপ ব্যবহার করে আপনার ম্যাটলব ইনস্টলটির স্ক্রিপ্ট করুন এবং পুরো জিনিসটিকে একটি পরিষেবা হিসাবে গণনায় রূপান্তর করুন।

16 জি 16 জিবি কি?

  • হ্যাঁ, সাধারণত যখন আমরা প্রত্যয়টি ত্যাগ করি তখন আমরা বাইটগুলির ইউনিটগুলিতে বেস 2 নম্বর বোঝায়। আপনি সংক্ষিপ্ত করতে চাইলে 16 জিআইবি লিখতেন would

"আমার কাছে ম্যাট্রিকগুলি প্রয়োজন যা> 100 জিবি are আপনি ইসি 2 দিয়ে এটি করতে পারবেন কিনা তা আমি জানি না।"

  • ইসি 2 তে 2 টিবি পর্যন্ত প্রধান মেমরি সহ মেশিন রয়েছে। নিজের জন্য দেখুন. https://aws.amazon.com/ec2/instance-types/

আপনার কি ক্যাচ সাফ করা উচিত echo 3 > /proc/sys/vm/drop_caches?

  • হ্যাঁ, সর্বদা এটি করতে ক্ষতি হয় না। লিনাক্স কার্নেলের ডকুমেন্টেশন / sysctl / vm.txt দেখুন।

মাতালবকে আপনি কীভাবে স্মৃতিতে এমব্লক করতে পারেন?

  • man mlock। যদিও আমি বোকা হয়েছি যখন আমি এটি উদ্ধৃত করেছি। এই কলটি আশ্বাস দেয় যে আপনি যে সমস্ত মেমরি চান তা বরাদ্দ করতে এবং অদলবদল হওয়া থেকে দূরে রাখতে পারেন, এটি কখনই ভার্চুয়াল মেমরি ব্যবহার করবে না। আপনি যা চান তা তা নয়।

আমি মনে করি আপনি মতলব সি সি এপিআই করতে পারেন। - - প্রক্রিয়াগুলিতে কোনও ব্যর্থতা হলে অদলবদল বন্ধ করার কোনও ধারণা কি আপনার আছে?

  • আমি এখানে খোলামেলা হতে চলেছি, আপনার প্রস্তাবিত পদ্ধতিতে মাইক্রো ম্যানেজিং অদলবদলের ধারণাটি হাস্যকর। অপারেটিং সিস্টেমের কাজ হ'ল সংস্থানগুলি পরিচালনা করা এবং এগুলি সুষ্ঠু ও ধারাবাহিকভাবে সরবরাহ করা। একবার আপনি আরও সংস্থান দেওয়ার পরে এটি উপযুক্ত হিসাবে এটি সেগুলি ব্যবহার করবে। আপনার কাজ শেষ হয়ে গেলে এবং এটির নীচে থেকে উত্সগুলি বের করে দেওয়ার জন্য আপনাকে এটি জানাতে হবে না, ওএস আপনাকে কখন এটি সম্পন্ন করবে তা বলে।

আমি যখন ওএসকে একটি মেমরি ঠিকানার জায়গার জন্য জিজ্ঞাসা করি, কখনও কখনও এটি সর্বদা সফল হয় না, এর অর্থ এই নয় যে আমি আবার চেষ্টা করতে পারি না। এই মাতলাব দু'বার কল করে কল করতে পারে না মাতলাবের সমস্যা।

সুতরাং, আপনি যে পরিবর্তনটি চান তা প্রভাবিত করতে, যদি সেই 100G স্পেসটি যদি সত্যিই প্রিমিয়ামে থাকে তবে অপারেটিং সিস্টেমটিকে এটির মেমরি পদচিহ্ন ছাঁটাইতে কীভাবে বলা উচিত (স্টার্টারের জন্য ক্যাশে সাফ করে) যাতে মেমরি পরিচালকটি না করে এটি সরবরাহ করা হয়েছিল যে অতিরিক্ত অদলবদল স্থান ব্যবহার করার প্রয়োজনীয়তা অনুভব করুন। তারপরে এবং তারপরেই আপনি মেমোরি ম্যানেজারকে অদলবদলটি প্রকাশ করতে চাইতে পারেন।

মেমরি এবং ডিস্কের মতো জিনিসগুলি বাড়ানো সহজ, সেগুলি সঙ্কুচিত করা খুব শক্ত। সঙ্কুচিত হওয়া প্রতিটি ব্যবহারকারীর সেই জায়গার মধ্যে বরাদ্দ থাকা সংস্থানগুলি পুনরায় ভারসাম্য বজায় রাখে। আমি যদি এর পরিবর্তে বলি "আমার কাছে 100TB স্টোরেজ অ্যারে রয়েছে তবে এখন আমার কেবল 60TB প্রয়োজন, যখন আমি 40TB ডিস্ক সরিয়ে ফেলি কেন অ্যারে কাজ বন্ধ করে দেয়?" ঠিক আছে, উত্তরটি কি সঠিক হবে?

আমি এটি দেখতে যেমন এখানে আপনার বিকল্পগুলি আছে।

  1. এই বিশাল কর্মক্ষম সেটগুলির জন্য কীভাবে মেমরি বরাদ্দ করা হয় তার উপর আপনি আরও ভাল নিয়ন্ত্রণ পেতে পারেন কিনা তা দেখতে ম্যাটল্যাব সি এপিআই তদন্ত করুন।

  2. আপনার এখন সাব-ম্যাট্রিকেস বা কিছু অন্যান্য স্পার ডেটা উপস্থাপনা ব্যবহার করে যা গণনা করা হয়েছে তা গণনা করার জন্য আপনার গণনাটিকে রিফ্যাক্টর করুন।

  3. গণনা সম্পাদনের জন্য লিনিয়ার বীজগণিত গ্রন্থাগারগুলির আধিক্য ব্যবহার করে আপনার নিজের প্রোগ্রাম সি / সি ++ এ লিখুন এবং আপনার প্রয়োজন ঠিকানাটি বরাদ্দ করতে বেনামে mallocবা mmapবেনামে ব্যবহার করুন ।


হ্যাঁ, তবে এটি যথেষ্ট নাও হতে পারে এবং এটি সফল হওয়ার আগে আপনাকে অপেক্ষা করতে হবে এবং আবার চেষ্টা করতে হতে পারে, যদি এটি কখনও না ঘটে।
পেটেরাকি

1
ওহ, আপনার মন্তব্য বাকি আমার স্মার্টফোনে প্রদর্শিত হয়নি। আপনি সুডো এর মতো প্রতিধ্বনি করতে পারবেন না, পরিবর্তে করুন। echo 3 | sudo tee /proc/sys/vm/drop_caches
পেপেরাকি

আমি এই উত্তরটি গ্রহণ করি কারণ এর উত্তরে সঠিক ধারণা রয়েছে। পরিবেশ স্থাপনের মতো একই স্ক্রিপ্টে ক্লায়েন্ট চালানো ত্রুটিযুক্ত-প্রবণ। এটি সম্পর্কে আরও আলোচনা এখানে unix.stackexchange.com/a/298543/16920 - - আপনি নিজের দেহটি সামান্য পরিষ্কার করতে পারলে দুর্দান্ত হবে।
লিও লোপল্ড হার্টজ 준영

12

আপনি কোনও সফ্টওয়্যারটির জন্য অদলবস্তুকে উত্সর্গ করতে পারবেন না। আপনি যা করতে পারেন তা হ'ল একটি শেল স্ক্রিপ্ট তৈরি করা যা একটি সোয়াপ তৈরি করে, ম্যাটল্যাব শুরু করে, এবং ম্যাটল্যাবটি প্রস্থান করার সময় অদলবদু মুছতে পারে।

এখানে একটি উদাহরণ স্ক্রিপ্ট যা / টিএমপি ডিরেক্টরিতে 10Mb এর অদলবদল তৈরি করে, এটি মাউন্ট করে, আর শুরু করে (আমার কাছে ম্যাটল্যাব নেই), অপেক্ষা করুন আর, বেরিয়ে আসুন, অদলবদল ফাইলটি মুছে ফেলুন এবং এটি মুছুন।

দয়া করে নোট করুন: - আপনার একটি সতর্কতা হবে কারণ সোয়াপ ফাইলটি রুটের মালিকানাধীন নয়। এটি কারণ যে কোনও সফ্টওয়্যার, সম্ভবত আপনার দ্বারা চালিত না হলে সিস্টেমটি ব্যবহার করবে এবং আপনি এই ফাইলটিতে পড়তে পারেন ... আমি আপনাকে এটি ঠিক করতে দিই। - আপনি যদি [ctrl] - [c] স্ক্রিপ্ট, বা লগঅফ, বা ইত্যাদি, অদলবদল মাউন্ট থাকবে। আমি আপনাকে এটি ঠিক করতে দিন।

#!/usr/bin/env bash

SWAP_FILE=/tmp/my_swap_file
SIZE_MB=10
TO_RUN="R"

dd if=/dev/zero of=${SWAP_FILE} bs=1M count=${SIZE_MB}
mkswap ${SWAP_FILE}
chmod 0600 ${SWAP_FILE}
sudo swapon -v ${SWAP_FILE}
echo "Swap enabled. Press enter to continue"; read
${TO_RUN}
echo "I will remove the swap. Press enter to continue"; read
sudo swapoff -v ${SWAP_FILE}
rm -vf ${SWAP_FILE}

1
ঠিক আছে, এটি সত্যই ম্যাটল্যাবকে উত্সর্গীকৃত নয়, তবে যে কোনও পরিস্থিতিতে সাময়িকভাবে আরও বেশি র্যাম প্রয়োজন। দয়া করে নোট করুন যে স্বপন / অদলবদলের রুট ডানদিকের প্রয়োজন (তাই: সুডো)
মাইকেল হোরেম্যান

1
হ্যা তোমার আছে. এভাবেই রুট হওয়া যায়।
মাইকেল Hooreman

ভাল উত্তর. আমি ব্যক্তিগতভাবে কাছে যাবে এটা এই ছিল, এবং thise সুদৃশ্য মুহূর্ত জন্য আমার নিজের add-swap.sh স্ক্রিপ্ট রাখা যখন মেমরি খাওয়া পরার
Sergiy Kolodyazhnyy

আমি অনুগ্রহটি এখানে প্রদান করেছি কারণ এটি আমাকে সঠিক উপায়ে তৈরি করেছে। আমি তবে উত্তরটি গ্রহণ করতে পারি না কারণ ত্রুটি-পরিচালনা খুব কঠিন এবং অসম্পূর্ণ। মতলব চালানো থেকে আলাদাভাবে অদলবদল সেটআপ করা ভাল, দয়া করে উত্তরটি এখানে দেখুন unix.stackexchange.com/a/298543/16920
লিও লোপোল্ড হার্টজ 준영

1

এইভাবে আপনি একটি বাহ্যিক হার্ড ড্রাইভ ব্যবহার করে আপনার SWAP মেমরি প্রসারিত করতে পারেন :

  • প্রথমে চালিয়ে আপনার আসল SWAP মেমরিটি লিখুন:

    free -m
    
  • দ্বিতীয়ত, আপনার এইচডিডি ফোল্ডারটি হাতে রাখুন। এটির মতো কিছু হওয়া উচিত /media/myhdd

  • আপনি যে অতিরিক্ত SWAP যুক্ত করতে চান তার আকার নির্ধারণ করুন। ধরা যাক, এক্স জিবি।
  • সেই পরিমাণটি বাইটের পরিমাণ গণনা করুন। জিবি ব্যবহার করে এটি হ'ল: ওয়াই = এক্স * 1024 ^ 3 , যেখানে ওয়াই আপনার গণনার ফলাফল।
  • ফাইলটির ব্লক আকার চয়ন করুন (এটি বাইটে রয়েছে)। আসুন এখানে ডিফল্টটি ব্যবহার করুন: 4096 (এটি সম্পর্কে এখানে আরও দেখুন )।
  • ফাইলটিতে কতগুলি ব্লক থাকবে তার গণনা করুন: জেড = ওয়াই / 4096
  • আকারের একটি ফাইল তৈরি করুন এক্স টার্মিনালে নিম্নলিখিত কমান্ডের সাহায্যে গিগাবাইট:

    dd if=/dev/zero of=/media/myhdd/swapfile bs=4096 count=Z
    
  • এটি ব্যবহার করে ফাইলে SWAP তৈরি করুন:

    sudo mkswap /media/myhdd/swapfile -f
    
  • অবশেষে, সোয়াপ্প সক্ষম করুন:

    sudo swapon -p 1000 /media/myhdd/swapfile
    

এখন আপনার সোয়াপ বেড়েছে। আবার পরীক্ষা করে দেখুনfree -m


আমরা এটি একটি অ-ইন্টারেক্টিভ স্ক্রিপ্টে সেটআপ করতে পারি ( sudoক্ষমতার প্রয়োজন):

#!/bin/bash

### Inputs ###

swap_GB=$(expr 1) # Enter here size of the swap memory to create, in GB.
swap_bs=$(expr 4096) # Enter here block size, in bytes (must be a multiple of 8).
HDD_folder="/media/myhdd/" # Enter absolute path of HDD inside the brackets.

### Swap creation ###

swap_size=$(expr $swap_GB \* 1024 \* 1024 \* 1024 / $swap_bs)
dd if=/dev/zero of=${HDD_folder}"/swapfile" bs=$swap_bs count=$swap_size
mkswap ${HDD_folder}"/swapfile" -f
swapon -p 1000 ${HDD_folder}"/swapfile"

### EOF ###

PS: সম্ভব হলে সঠিক / সঠিক করুন। যেমনটি বলা হয়েছে, এটি আমার প্রথম স্ক্রিপ্ট :)


ঠিক আছে, অদলবদল ইতিমধ্যে ধীর গতির, তবে ইউএসবি ড্রাইভে অদলবদল করার বিষয়টি আমি ভাবতে পারি না। এটি জাহান্নামের মতো ধীর হয়ে উঠবে IMHO
মাইকেল হোরেম্যান

সংক্ষিপ্তসার হিসাবে একটি স্ক্রিপ্ট এখানে দুর্দান্ত।
লিও লোপল্ড হার্টজ

1
আমি কখনই কোনও স্ক্রিপ্ট তৈরি করি নি, তবে তা দিয়ে যাব।

1

আমি কমপক্ষে কতটা সংকুচিত র‌্যাম (zram কার্নেল মডিউল, কার্নেল সংস্করণ ৩.১৪ থেকে পাওয়া যায়) পরীক্ষা করে দেখব।

আর্চলিনাক্স উইকির নির্দেশাবলী অনুসরণ করা হচ্ছে

modprobe zram
echo lz4 > /sys/block/zram0/comp_algorithm
echo 4G > /sys/block/zram0/disksize
mkswap --label zram0 /dev/zram0
swapon --priority 100 /dev/zram0

আমার অনুমান যে সংকীর্ণ র‌্যামটি ডিস্ক I / O এর চেয়ে দ্রুত হওয়া উচিত।

পুনরায় চালু হওয়ার পরেও পরিবর্তনটি ধরে রাখতে বুট টাইম কমান্ডগুলিতে রাখুন /etc/rc.localএবং রান করুন sudo systemctl enable rc-local.service


আমি মেমরির আকার এবং পেজিং হারে জ্রামের প্রভাবের জন্য unix.stackexchange.com/q/297752/16920 থ্রেডের উত্তরটি প্রসারিত করেছি । আমি মেমরির আকারের কোনও প্রভাব খুঁজে পাই না, সম্ভবত বেশিরভাগ পেজিংয়ের উপর। যাইহোক, সিস্টেমড / ... সতর্কতা রানিটের সাথে বেড়েছে। জ্রামের ত্রুটি হার সম্পর্কে জেনে রাখা ভাল।
লিও লোপল্ড হার্টজ 준영

Zram0 ক্ষেত্রে, কিছু পরিসংখ্যান পাওয়া যায় / zram0 / sys / অবরুদ্ধ ফাইলের মধ্যে orig_data_size এবং compr_data_size । আমার সেখানে খুব বেশি ডেটা অদলবদল হয় না, তবে যা আছে তার জন্য অনুপাত প্রায় 0.35। সেই অনুপাতের সাথে 11 গিগাবাইট ডেটা 4 জিবি র‍্যামের সাথে মাপসই হতে পারে। এর অর্থ 7 গিগাবাইট ডেটা ডিস্কে অদলবদল হয়নি।
জেজে হাকালা

1
আপনি বুট টাইম কমান্ডগুলি /etc/rc.local এবং তারপরে রাখতে পারেনsudo systemctl enable rc-local.service
জে জে হাকালা

আমি জানতে পেরেছি যে zramএইচডিডি / এসএসডি-তে অদলবদলের জন্য প্রযোজ্য নয় তাই zramএখানে প্রযোজ্য নয়, অনুগ্রহ করে থ্রেডটি জিজ্ঞাসা করুন জিজ্ঞাসুবন্টু
লোপোল্ড হার্টজ 준영

1

আপনার zswapযদি এইচডিডি / এসএসডিতে অদলবদল থাকে তবে ব্যবহার করুন । থো মডিউলটি zramএইচডিডি / এসএসডি-তে অদলবদল ছাড়াই রয়েছে, সুতরাং হাকালার উত্তর প্রযোজ্য নয়। থ্রেড zram বনাম zswap বনাম zcache চূড়ান্ত গাইড: কখন ব্যাখ্যার জন্য কোনটি ব্যবহার করবেন। zswapথ্রেডে বর্ণিত হিসাবে সেটআপ কীভাবে উবুন্টু 16.04 এ মতলব গণনার জন্য সাফল্যের সাথে জাভাস্প সক্রিয় করবেন?

  • নিম্নলিখিত লাইনের সাথে সংশ্লিষ্ট লাইনটি প্রতিস্থাপন করুন /etc/default/grub

    # https://wiki.archlinux.org/index.php/Zswap
    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash zswap.enabled=1 zswap.max_pool_percent=25 zswap.compressor=lzo"
    
  • চালান sudo update-grub

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.