প্রশ্ন শীর্ষ - ভার্চুয়াল মেমরি আকার মানে কি? ... লিনাক্স / উবুন্টু


আমি দৌরাচ্ছি top আমার সার্ভারের পারফরম্যান্স এবং আমার জাভা প্রসেসগুলির 2 টি নজরদারি করতে 800MB-1GB পর্যন্ত ভার্চুয়াল মেমরি দেখান। যে একটি খারাপ জিনিস?

ভার্চুয়াল মেমরি মানে কি?

এবং ওহ btw, আমি 1 গিগাবাইট swap আছে এবং এটি 0% ব্যবহৃত দেখায়। তাই আমি বিভ্রান্ত।

জাভা প্রক্রিয়া = 1 টমকাট সার্ভার + আমার নিজস্ব জাভা ডেমন সার্ভার = উবুন্টু 9.10 (কর্মিক)


100
2018-05-04 15:37


উত্স


দেখুন: serverfault.com/questions/48582/... - Juliano


উত্তর:


ভার্চুয়াল মেমরি এমনকি অগত্যা মেমরি নয়। উদাহরণস্বরূপ, যদি একটি মেমরি-ম্যাপ একটি বড় ফাইল থাকে, তবে ফাইল আসলে ডিস্কে সংরক্ষিত হয় তবে এটি এখনও প্রক্রিয়াতে "ঠিকানা স্থান" নেয়।

ঠিকানা স্থান (অর্থাত্ প্রক্রিয়া তালিকায় ভার্চুয়াল মেমরি) কোনও খরচ হয় না; এটা আসল না. আসল বিষয় হল আরএসএস (RES) কলাম, যা বাসিন্দা স্মৃতি। যে আপনার প্রকৃত মেমরি কত একটি প্রক্রিয়া দখল করা হয়।

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

এখনো বিভ্রান্ত? আপনি কি সত্যিই জানা প্রয়োজন এখানে: ব্যবহার করুন free কমান্ড এবং আপনার প্রোগ্রাম শুরু করার আগে এবং পরে ফলাফল চেক করুন (উপর +/- buffers/cache লাইন)। যে পার্থক্য কত নতুন মেমরি আপনার নতুন শুরু প্রোগ্রাম ব্যবহৃত।


119
2018-05-05 01:17



"আপনার প্রোগ্রাম শুরু করার আগে এবং পরে ফলাফল পরীক্ষা করুন", বিকল্পভাবে, ইউএসএস (স্বতন্ত্র সেট সাইজ) ব্যবহার করে ফেরত পাঠান smem। - Hubert Kario
তাই এমন একটি সরঞ্জাম রয়েছে যা সত্যিকারের মেমরি ব্যবহার করা হচ্ছে, সরঞ্জাম যা তৃতীয় পক্ষ নয়। - CMCDragonkai
@ সিএমসিড্রাগনকাই হ্যাঁ, মুক্ত। - deviantfan
আমি যদি মাধ্যমে একটি জাভা প্রক্রিয়া শুরু java -Xmx16g RunLongযা জাভা প্রসেসের জন্য 16 জিবি মেমরি রিজার্ভ করবে VIRT উপরের, মনে হয় 16 গিগাবাইট গণনা করা হয়। এই ক্ষেত্রে, এই 16 জিবি মেমরি টাইপ কি, যে মেমরি মেমরি বা ..? - Eric Wang


শীর্ষ থেকে (1) ম্যান পৃষ্ঠা:

o: VIRT  --  Virtual Image (kb)
      The  total  amount  of  virtual  memory  used  by the task.  It
      includes all code, data and shared libraries  plus  pages  that
      have been swapped out.

      VIRT = SWAP + RES.

RES যেখানে রেসিডেন্ট মেমরি মানে (শারীরিক মেমরি ব্যবহৃত)।

আসলে যে সঠিক না (আর)। যখন এটি "সোয়াপ" বলে থাকে, এতে এমন ফাইল রয়েছে যা প্রোগ্রামটি তার ঠিকানা স্পেসে ম্যাপ করা হয়েছে, যা প্রকৃতপক্ষে প্রকৃত RAM ব্যবহার করে নাও হতে পারে। এই মেমরি ফাইল ব্যাকডেড কিন্তু সত্যিই swap হয় না।

VIRT এছাড়াও বরাদ্দ করা হয়েছে যে পৃষ্ঠা রয়েছে কিন্তু এখনো কিছু জন্য ব্যবহার করা হয় না। এই অবস্থার যেকোন পৃষ্ঠাটি কার্নেল জিরো পেজে রূপান্তরিত হয় (উজ্জ্বল ধারণা - আপনার এটি দেখা উচিত) যাতে এটি VIRT- এ প্রদর্শিত হয় তবে আসলে কোন মেমরি ব্যবহার করে না।


22
2018-05-04 15:43



ভাল যে আকর্ষণীয়, তাই VIRT = SWAP + RES, আমার SWAP ব্যবহার শূন্য হয় কিভাবে, যখন 2 জাভা প্রসেসের জন্য ভার্চুয়াল মেমরি 1 গিগাবাইট কাছাকাছি ?? - kapso
মূলত শীর্ষ শো .... সোয়াপ: 1048568k মোট, 0k ব্যবহৃত, 1048568k বিনামূল্যে, 505728 কে ক্যাশে - kapso
@ ব্যবহারকারী 42159 এই উত্তরটি ভুল! মানুষের শীর্ষে কোন 'VIRT = SWAP + RES' নেই! -m : VIRT/USED toggle Reports USED (sum of process rss and swap total count) instead of VIRT। এটি একটি দু: খের বিষয় যে আমি এই উত্তরকে কমিয়ে আনতে পারি না। - duleshi
এই উত্তর ভুল। USED ​​= Res + Swap Size (উপরের ক্ষেত্রের ব্যবস্থাপনা থেকে, শীর্ষে যখন F কী টিপে অ্যাক্সেস করা হয়। শীর্ষ মান পৃষ্ঠা থেকেও)। - Jason S


আমি এই পাওয়া মুগুরুল সুমনারি থেকে ব্যাখ্যা খুব পরিস্কার:

VIRT একটি প্রক্রিয়া ভার্চুয়াল আকার জন্য দাঁড়িয়েছে, যা সমষ্টি   মেমরি এটি আসলে ব্যবহার করা হয়, মেমরি এটি নিজেই মধ্যে ম্যাপ করা হয়েছে (জন্য   উদাহরণস্বরূপ X সার্ভারের জন্য ভিডিও কার্ডের RAM), ডিস্কে ফাইলগুলি   এটি মধ্যে ম্যাপ করা হয়েছে (সবচেয়ে উল্লেখযোগ্যভাবে শেয়ারকৃত লাইব্রেরি), এবং মেমরি   অন্যান্য প্রসেসের সাথে ভাগ করা। VIRT কত মেমরি প্রতিনিধিত্ব করে   প্রোগ্রাম বর্তমান মুহুর্তে অ্যাক্সেস করতে পারবেন।

RES আবাসিক আকারের জন্য দাঁড়িয়েছে, যা একটি সঠিক উপস্থাপনা   একটি প্রকৃত ভৌত মেমরি একটি প্রক্রিয়া খাওয়া হয় কত। (এটাও   সরাসরি% MEM কলামে অনুরূপ।) এটি কার্যত সর্বদা হবে   VIRT আকারের চেয়ে কম, যেহেতু বেশিরভাগ প্রোগ্রাম C তে নির্ভর করে   গ্রন্থাগার।

SHR VIRT আকার আসলে কতটা sharable (মেমরি   বা লাইব্রেরি)। লাইব্রেরি ক্ষেত্রে, এটা অপরিহার্য মানে না   যে সমগ্র লাইব্রেরি বাসিন্দা। উদাহরণস্বরূপ, যদি শুধুমাত্র একটি প্রোগ্রাম   লাইব্রেরীতে কয়েকটি ফাংশন ব্যবহার করে, পুরো লাইব্রেরিটি ম্যাপ করা হয় এবং   VIRT এবং SHR, কিন্তু শুধুমাত্র গ্রন্থাগারের অংশ গণনা করা হবে   ব্যবহৃত ফাংশন ধারণকারী ফাইল আসলে লোড করা হবে   এবং RES অধীনে গণনা করা হবে।


8
2018-01-27 17:53





পিএস / শীর্ষ আউটপুট মধ্যে VIRT কলাম মেমরি ব্যবহার পরিমাপ প্রায় অপ্রাসঙ্গিক। এটা সম্পর্কে চিন্তা করবেন না। Apache ভারী লোড VIRT বনাম রেস মেমরি

https://stackoverflow.com/questions/561245/virtual-memory-usage-from-java-under-linux-too-much-memory-used


5
2018-05-04 15:41



ধন্যবাদ, আমি চিন্তিত এবং বিভ্রান্ত, কারণ সোয়াপ ব্যবহার 0% ছিল, ভার্চুয়াল মেমরি কলাম খুব বেশী। এবং আমার কাছে মোট 2.7 গিগাবাইট মেমরি ব্যবহৃত 1.7 গিগাবাইট ভার্চুয়াল মেমরি আছে? - kapso


লিনাক্স ভার্চুয়াল মেমরি সমর্থন করে, যা ডিস্কে RAM এর এক্সটেনশান হিসাবে ব্যবহার করে যাতে ব্যবহারযোগ্য মেমরির কার্যকরী আকার সামঞ্জস্যপূর্ণভাবে বৃদ্ধি পায়। কার্নেল হার্ড ডিস্কে মেমরির বর্তমানে অব্যবহৃত ব্লকের বিষয়বস্তু লিখবে যাতে মেমরিটি অন্য উদ্দেশ্যে ব্যবহার করা যেতে পারে। মূল বিষয়বস্তু আবার প্রয়োজন হলে, তারা মেমরি ফিরে পড়া হয়। এই সব ব্যবহারকারীর জন্য সম্পূর্ণ স্বচ্ছ তৈরি করা হয়; লিনাক্সের অধীনে চলমান প্রোগ্রামগুলি কেবলমাত্র মেমরির বৃহত্তর পরিমাণে উপলব্ধ রয়েছে এবং তাদের অংশগুলি সময়-সময়ে ডিস্কগুলিতে থাকে তা লক্ষ্য করে না। অবশ্যই, হার্ড ডিস্কটি পড়ার এবং লেখার গতি কম (হাজার বার ধীরে ধীরে ক্রম অনুসারে) প্রকৃত মেমরি ব্যবহার করার চেয়ে, তাই প্রোগ্রাম দ্রুত চালানো হয় না। ভার্চুয়াল মেমরি হিসাবে ব্যবহৃত হার্ড ডিস্কের অংশটি swap space বলা হয়।

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

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

অপারেটিং সিস্টেম পরিভাষার একটি নোট: কম্পিউটার বিজ্ঞান সাধারণত সোয়াপিংয়ের স্থান (সম্পূর্ণ প্রক্রিয়াটিকে সোয়াপ স্পেসের বাইরে লেখার) এবং পেজিং (শুধুমাত্র নির্দিষ্ট আকারের অংশগুলি, সাধারণত কয়েক কিলোবাইট লেখার সময়) মধ্যে আলাদা করে। পেজিং সাধারণত আরও কার্যকর, এবং লিনাক্স এটি যা করে, কিন্তু ঐতিহ্যগত লিনাক্স শব্দভাণ্ডার যাই হোক না কেন সোয়াপিং সম্পর্কে আলোচনা করে।

সূত্র: http://www.faqs.org/docs/linux_admin/x1752.html


2
2018-05-04 15:43



এই উত্তরটি ভুল ধারণাকে ছড়িয়ে দেয় যে ভার্চুয়াল মেমরিটি সোয়াপিং বা পেজিংয়ের মতো একই। RAM এর এক্সটেনশান হিসাবে ডিস্ক ব্যবহার করে ভার্চুয়াল মেমরি পূর্বাভাস দেয়। এবং প্রচুর সিস্টেম রয়েছে (যেমন বেশিরভাগ সোহো রাউটার) যার ভার্চুয়াল মেমরি রয়েছে কিন্তু RAM এর এক্সটেনশান হিসাবে ডিস্ক ব্যবহার করবেন না। (ও ওপি এর প্রশ্নের উত্তর নয়, কারণ সে কোনও সোয়াপ ব্যবহার করে না।) - David Schwartz


VIRtual উপরের কলামটি প্রক্রিয়াটির সুপার-স্পেস (সুপার কয়জন স্পেস) বোঝায়, যা প্রক্রিয়া চালানোর সময় আসলেই গ্রহণ করা হচ্ছে না। আরেকটি কলাম আছে RESident, যা রানটাইম সময়ে প্রক্রিয়া দ্বারা বরাদ্দ প্রকৃত প্রকৃত মেমরি / স্পেস বোঝায়।

দুটিটির মধ্যে পার্থক্যের কারণটি উদাহরণস্বরূপ বোঝা যেতে পারে: যদি প্রক্রিয়াটি নির্দিষ্ট লাইব্রেরী ব্যবহার করে তবে লাইব্রেরী আকারটিও সহায়তা করবে virtual-size। তবে, শুধুমাত্র লাইব্রেরির একটি অংশ ব্যবহার করা হবে (যেমন কিছু ব্যবহারের পদ্ধতি), যাতে এটি সহায়তা করবে resident-size

জন্য পড়ুন অধিক তথ্য


2
2018-02-26 14:27





"VIRT" শুধু স্পেস ঠিকানা, RES "প্রকৃত" মেমরি, কিন্তু "RES" (= ভাগ) পরিমাণ "RES" পরিমাণটি RES এর অংশ যা অন্য প্রক্রিয়াগুলির সাথে ভাগ করা হয়। তাই বেশিরভাগ প্রসেসের জন্য, আমি বিশ্বাস করি যে RES থেকে SHR হ্রাস করে আপনি আপনাকে এমন পরিমাণ মেমরির পরিমাণ প্রদান করে যা সত্যিই এই বিশেষ প্রক্রিয়ার জন্য দায়ী।


0
2018-04-18 23:03