প্রচুর পরিমাণে ফ্রি মেমরি বাকি থাকলে অদলবদ কেন ব্যবহৃত হয়?


35

আমার কাছে ভাল স্মৃতি সংস্থান সহ বেশ ভাল ওয়েব (ডেডিকেটেড) সার্ভার রয়েছে:

System information
Server load     2.19 (8 CPUs)   
Memory Used     29.53% (4,804,144 of 16,267,652)    
Swap Used   10.52% (220,612 of 2,097,136)   

আপনি দেখতে পাচ্ছেন, প্রচুর পরিমাণে ফ্রি মেমরি উপলব্ধ থাকলে আমার সার্ভারটি অদলবদল করে।

এটি কি স্বাভাবিক বা কনফিগারেশন বা কোডিংয়ে কিছু ভুল আছে?

এনবি
মাই মাইএসকিউএল প্রক্রিয়া কোনও কারণে সিপিইউ পাওয়ার 160% এর বেশি ব্যবহার করছে; আমি জানি না কেন তবে আমার একসাথে 70 এর বেশি ব্যবহারকারী নেই ...


অ্যাপ্লিকেশনগুলি কি লিনাক্সের 100% এর বেশি সিপিইউ ব্যবহার করতে পারে? এরম ...
নীলরাজা

5
@ ব্লুরাজা: হ্যাঁ, কারণ লিনাক্সে সিপিইউ ব্যবহারটি একটি সিপিইউ-র তুলনায় পরিমাপ করা হয়, আপনার সিস্টেমে সমস্ত সিপিইউ নয়। সুতরাং 8 সিপিইউ সহ একটি মেশিনে আপনার সর্বাধিক 800% সিপিইউ উপলব্ধ।
ড্যানিয়েল প্রাইডেন 21

আপনি মাইএসকিউএল এর কোন সংস্করণ ব্যবহার করছেন ???
রোল্যান্ডোমাইএসকিউএলডিবিএ

@ রোল্যান্ডোমাইএসকিউএলডিবিএ সংস্করণ 5.5
ব্যবহারকারী 1179459

উত্তর:


61

এটি পুরোপুরি স্বাভাবিক।

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

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

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

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


সেক্ষেত্রে আপনি দয়া করে ব্যাখ্যা করতে পারেন কেন কখনও কখনও অদলবদল স্থানটি মোটেই ব্যবহৃত হয় না। মেমো: 49554484 কে মোট, 4087592 কে ব্যবহৃত, 45466892 কে ফ্রি, 349244 কে বাফার অদলবদল: 94204k মোট, 0 কে ব্যবহৃত, 94204 কে ফ্রি, 1113644 কে ক্যাশেড
অনন্তন

4
@ অ্যান্থান: অনেক কারণ হতে পারে। সম্ভবত সম্ভবত বাফার লেখার কারণে সিস্টেমটি কখনই কোনও মেমরির চাপের মধ্যে ছিল না, তাই সুবিধাবাদী অদলবদলের কোডটি কখনও ট্রিগার করা হয়নি। এটাও হতে পারে কেউ ভেবেছিলেন কোন swap 'র ব্যবহার খারাপ ছিল এবং ভুল টিউন swap' র opportunistically সিস্টেম নেই (কমিয়ে তাই swappiness )।
ডেভিড শোয়ার্টজ

6

এটি ঘটতে পারে যদি অতীতে কোনও সময় আপনার মেশিনে শারীরিক র‌্যাম থাকার চেয়ে বেশি মেমরির প্রয়োজন ছিল। সেই সময় অদলবদলে কিছু তথ্য লেখা থাকবে।

পরে যখন মেমরি মুক্ত হয়, তখন অদলবদল থেকে নেওয়া ডেটা স্বয়ংক্রিয়ভাবে আবার র‍্যামে পড়ে না: এটি তখনই ঘটে যখন অদলবদলের ডেটা আসলে কিছু প্রক্রিয়া দ্বারা প্রয়োজন হয়। এটি পুরোপুরি স্বাভাবিক।

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


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

আমি কেবলমাত্র একটি দৃশ্যের কথা উল্লেখ করেছি যেখানে আপনি অদলবদলের ব্যবহার করতে পারেন, তবে এটি অবশ্যই যথাযথ শারীরিক স্মৃতিশক্তি না থাকার লক্ষণ নয় - উপরের ডেভিড শোয়ার্টজ ব্যাখ্যা করেছেন
brain99

3

আপনি এই আচরণটি এর দ্বারাও পরিবর্তন করতে পারবেন sysctl -w vm.swappiness=10, যা অদলবদলের ব্যবহারের প্রয়োজন না হওয়া অবধি কমিয়ে দেবে।

মাইএসকিউএল হিসাবে, আপনি কমপক্ষে টিউনিং - প্রাইমার.শ স্ক্রিপ্টটি ব্যবহার করে একটি বেসলাইন কনফিগারেশন পরীক্ষা করেছেন ?


1
এটি ক্যাশে / বাফারদের পুনরুদ্ধার করার প্রবণতা বাড়িয়ে তুলবে। দুর্ভাগ্যক্রমে এটি 29.53% এর চিত্রে বাফার / ক্যাশে অন্তর্ভুক্ত কিনা তা মূল প্রশ্ন থেকে পরিষ্কার নয় - যদি তা না হয়, তবে আপনার সুগারজিস্ট পরিবর্তনটি সম্পাদনের ক্ষেত্রে বিরূপ প্রভাব ফেলবে। যদি এই ডিবিএমগুলি ইনডোডবটি ব্যাপকভাবে ব্যবহার করে থাকে তবে এটি সম্ভবত খারাপভাবে কনফিগার করা হয়েছে (যদিও ওয়েবসারভার হিসাবে ব্যবহারের জন্য একটি 8 কোর 16
জিবি বাক্সটি বিএডি ডিজন্ন

আপনি কেন ওয়েব সার্ভারের জন্য এটির খারাপ পছন্দ বলছেন? আমি ইনোডাব বেশি ব্যবহার করি না আমি এখনও মাইসাম পছন্দ করি কারণ আমার পাঠ্য 70% এবং কেবল 30% লেখেন ....
ব্যবহারকারী 1179459

1

এটি সম্ভবত, যেমন ডেভিড ব্যাখ্যা করেছেন, লিনাক্স কার্নেলের একটি স্বাভাবিক আচরণ, তবে এটি মাইএসকিউএল "অদলবদল উন্মাদনা" সমস্যারও হতে পারে । আপনার ক্ষেত্রে (8 সিপিইউ, 16 গিগাবাইট র‌্যাম মোট, 5 জিবি ব্যবহৃত হয়েছে) এর জন্য, আপনার কম্পিউটারে নোডের জন্য 4 নোড (সকেট) এবং 4 গিগাবাইট র‌্যামযুক্ত একটি NUMA সিস্টেম হওয়া উচিত এবং 4 এর একটি মাইএসকিউএল ইনোডিবি বাফার পুল হওয়া উচিত গিগাবাইট।

সংক্ষেপে (সম্পূর্ণ বিবরণের জন্য আপনার উপরের লিঙ্কটি পড়া উচিত), যা ঘটে তা ঘটে:

  1. যখন আপনার সিস্টেম শুরু হয়, প্রক্রিয়াগুলি তাদের সমস্ত স্মৃতি ব্যবহার করে সমস্ত NUMA নোডে ছড়িয়ে দেওয়া হয়।
  2. যখন মাইএসকিউএল শুরু হয়, তখন এটি ইনোডিবি বাফার পুলের জন্য ৪ জিবি বরাদ্দ করে একটি NUMA নোডের র‌্যাম পূরণ করে এবং অন্যান্য নোডে কিছু র‌্যাম ব্যবহার করে।
  3. তারপরে, লিনাক্স কার্নেল, যা বরাদ্দ র‌্যামকে একটি NUMA নোড থেকে অন্যটিতে স্থানান্তরিত করতে পারে না, তারা মনে করে যে অনাহারে নোড থেকে পৃষ্ঠাগুলি অদলবদল করা ভাল (বা পৃষ্ঠাগুলি অদলবদল করা দরকার কারণ পৃষ্ঠাগুলি অদলবদল করা দরকার)।

এটি এড়াতে, সমস্ত কোরে র‍্যাম বরাদ্দ করতে মাইএসকিউএলের জন্য মেমরির বরাদ্দ পরিবর্তন করুন (আরও তথ্যের জন্য উপরের লিঙ্কটি দেখুন)।

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