"ফ্রি" কমান্ড এবং "ডমিডেকোড" কেন র‌্যামের জন্য আলাদা মান দেখায়?


9

আমার ভিএমওয়্যারের উপর একটি সেন্টোস 5.10 ( 32-বিট ) সার্ভার চলছে। এটি 4 জিবি র‌্যাম বরাদ্দ করা হয়েছে।

আমি যদি দৌড়ে dmidecode -t 17 | grep Size | grep MBযাই তবে আমি দেখতে পাচ্ছি:

Size: 4096 MB

তবুও যখন আমি দৌড়ে যাই free, আমি দেখতে পাই:

             total       used       free     shared    buffers     cached
Mem:       3107140    1239244    1867896          0        332     400464
-/+ buffers/cache:     838448    2268692
Swap:      2096472          0    2096472

মোট পরিমাণ মেমরি freeরিপোর্ট এবং dmidecodeআউটপুটের মধ্যে কেন তফাত আছে ?

আমি যে কার্নেলটি চালাচ্ছি তা হ'ল:

2.6.18-371.4.1.el5 #1 SMP Thu Jan 30 06:09:24 EST 2014 i686 i686 i386 GNU/Linux

স্বীকার করা যায় যে, কার্নেলটি চলছে না PAEতবে আমি ভেবেছিলাম যে কেবল 4 গিগাবাইটের বেশি মেমরির জন্য প্রয়োজনীয় ।

আমি জানি আমি কিছু সাধারণ মিস করছি - কেউ দয়া করে বিস্তারিত বলতে পারেন?

অতিরিক্ত নোট / পর্যবেক্ষণ

এটি অবশ্যই দেখে মনে হচ্ছে যে আমার কার্নেল অন্যান্য জিনিসগুলির জন্য একগুচ্ছ মেমরি সংরক্ষণ করছে। আমি যা দেখছি তা এখানে /var/log/dmesg:

Linux version 2.6.18-371.4.1.el5 (mockbuild@builder17.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)) #1 SMP Thu Jan 30 06:09:24 EST 2014
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000010000 - 000000000009f800 (usable)
 BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000ca000 - 00000000000cc000 (reserved)
 BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 00000000bfef0000 (usable)
 BIOS-e820: 00000000bfef0000 - 00000000bfeff000 (ACPI data)
 BIOS-e820: 00000000bfeff000 - 00000000bff00000 (ACPI NVS)
 BIOS-e820: 00000000bff00000 - 00000000c0000000 (usable)
 BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
 BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved)
 BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
 BIOS-e820: 00000000fffe0000 - 0000000100000000 (reserved)
 BIOS-e820: 0000000100000000 - 0000000140000000 (usable)
Warning only 4GB will be used.
Use a PAE enabled kernel.
3200MB HIGHMEM available.
896MB LOWMEM available.
found SMP MP-table at 000f6bf0
Memory for crash kernel (0x0 to 0x0) notwithin permissible range

উত্তর:


18

একটি 32-বিট কার্নেল সহ, আপনার কাছে কেবল 4 জিবি উপলব্ধ অ্যাড্রেস স্পেস রয়েছে । এই ঠিকানার স্থানের কিছুটিকে সিস্টেমের (ভার্চুয়াল বা শারীরিক) হার্ডওয়্যার, যেমন ভিডিও কার্ড, এনআইসি, ইত্যাদি তাদের নিজস্ব উদ্দেশ্যে ব্যবহার করতে হয়। নির্দিষ্ট হার্ডওয়্যারটির কত ঠিকানার জায়গার প্রয়োজন তার উপর নির্ভর করে এই ব্যবহারটি সাধারণত 256MB-1GB এর মধ্যে থাকে।

যেহেতু ঠিকানা ঠিকানাটি হার্ডওয়্যার দ্বারা ব্যবহৃত হয়, তাই সম্পর্কিত র্যামটি 32-বিট সিস্টেমে সাধারণত অ্যাক্সেসযোগ্য।

আপনার কাছে কয়েকটি বিকল্প রয়েছে:

  1. পছন্দসই বিকল্পটি একটি 64-বিট অপারেটিং সিস্টেম চালানো। এটি নাটকীয়ভাবে ঠিকানা স্থানটি প্রসারিত করে, তাই সমস্ত র‌্যাম এবং হার্ডওয়্যারের জন্য প্রচুর জায়গা রয়েছে। এটি 32-বিট প্রোগ্রামগুলি চালনার ক্ষমতা বজায় রেখে অ্যাপ্লিকেশনগুলিতে 2GB / 3GB 32-বিট সীমাটিও ভেঙে দেয়। সাধারণভাবে, 2 জিবি র‌্যামের বেশি যে কোনও সিস্টেমে এই সমস্যাগুলি এড়াতে একটি 64-বিট ওএস চালানো উচিত।
  2. আরেকটি বিকল্প হ'ল পিএই সক্ষম হওয়া সহ 32-বিট কার্নেল চালানো। এটি র‌্যামটিকে অনিচ্ছাকৃত করবে, তবে কার্নেল বিল্ডের বিশদগুলির উপর নির্ভর করে প্রতিটি প্রক্রিয়া এখনও 2 জিবি / 3 জিবি ঠিকানা স্পেসের মধ্যে সীমাবদ্ধ থাকবে। যেহেতু -৪-বিট ওএসগুলি 32-বিট অ্যাপ্লিকেশনগুলি পুরোপুরি ভালভাবে চালাবে তাই এর কোনও সুবিধা এবং অনেক অসুবিধা নেই (যেমন একটি আপগ্রেড পাথের অভাব)।

ধন্যবাদ। এটি বোধগম্য হয় তবে অন্যান্য উদ্দেশ্যে হার্ডওয়্যার দ্বারা "গোপন" / কতটা খাওয়া হয় তা আমি কীভাবে নির্দিষ্ট করে পরীক্ষা করতে পারি? এর অধীনে হবে /proc/meminfo?
মাইক বি

@ মাইকিবি বিশেষতঃ আমি নিশ্চিত না যে, প্রায় 800 এমবি কোথাও হারিয়ে গেছে।
মাইকেল হ্যাম্পটন

আমার প্রাথমিক প্রশ্নের প্রয়োজনে, আমি মনে করি এটির উত্তর দেওয়া হয়েছে তবে পরবর্তী প্রশ্নটি "কেন?"? দেখে মনে হচ্ছে এই (আচ্ছাদন অন্য থ্রেড আছে unix.stackexchange.com/questions/97261/... ) যাতে আমি আরো কিছু খনন চেষ্টা করব এবং পরে প্রশ্ন থাকতে পারে। ধন্যবাদ!
মাইক বি

পেশাদার সিস্টেম প্রশাসক হিসাবে, আমরা এটি সম্পর্কে যত্নশীল, তবে কেবলমাত্র এক পর্যায়ে - কোথায় এবং কীভাবে এটি অপারেশনগুলিকে প্রভাবিত করে। আমি মনে করি আমি সেই দিকটি সম্বোধন করেছি।
মাইকেল হ্যাম্পটন

2
@ মাইকেবি /proc/iomemআপনাকে এমন ডিভাইসগুলির দ্বারা ব্যবহৃত স্মৃতি দেখিয়ে দেবে যেখানে লিনাক্সের ড্রাইভার রয়েছে। E820 মেমরি মানচিত্র ( dmesgনতুনভাবে বুট করা কার্নেলের একটি প্রথম দিকে ) আপনাকে দেখায় যে আপনার BIOS / EFI কোন অঞ্চলগুলি সংরক্ষিত বলে মনে করে are একে অপরের সাথে মিলে যাওয়া আফাইক একটি ম্যানুয়াল টাস্ক যা কোনও সরঞ্জাম সমর্থন ছাড়াই।
মিহি

5

freeকমান্ডের আউটপুট সংরক্ষিত কার্নেল মেমরি এবং কয়েকটি অন্যান্য ছোট বিট গণনা করে না। আপনি এই তাত্পর্যটি দেখতে পাবেন এমনকি একটি -৪-বিট কার্নেল এবং এমনকি <2GB র‍্যাম সহ।


2
এটি কেবলমাত্র কয়েকটি ছোট বিট নয় ...
মাইকেল হ্যাম্পটন

ঠিক আছে, না, 8-বিট-মেক-এ-বাইট হিসাবে আক্ষরিক বিট নয় ... তবে এটি সর্বাধিক কয়েকটি দশক এমবি। শতকরা হার অনুসারে, এটি খুব ছোট।
জন

উদাহরণস্বরূপ, ভিএমওয়্যারের অভ্যন্তরে RHEL 5.10 চলমান দুটি -৪-বিট সিস্টেমে একটি 2 জিবি "ফিজিক্যাল" র‌্যাম মেশিন মোট 2010 এমবি দেখায় free, একটি 4 জিবি মেশিন 3948 এমবি দেখায়।
জন

1
ধন্যবাদ ... আশ্চর্যজনক যে আমি আমার মধ্যে এত বড় তাত্পর্য দেখছি তবে এটি "স্বাভাবিক" হতে পারে বলে মনে হচ্ছে।
মাইক বি

2
না, এটি "সাধারণ" নয় - এটি 800+ এমবি!
মাইকেল হ্যাম্পটন

3

আপনার শারীরিক র্যাম মানচিত্রের সমালোচনা লাইনটি এটি:

 BIOS-e820: 0000000100000000 - 0000000140000000 (usable)

এই লাইনটি দেখায় যে আপনার সিস্টেমের দৈহিক র‌্যামের 1 জিবি (0x40000000 বাইট, হেক্সাডেসিমাল) BIOS দ্বারা 4 জিবি সীমার উপরে ম্যাপ করা হচ্ছে, এটি পিএই ছাড়াই 32-বিট সিস্টেমে অ্যাক্সেসযোগ্য করে তুলছে।

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