আমার কাছে ভার্চুয়াল লিনাক্স (ফেডোরা 17) সার্ভার রয়েছে 28 জিবি র্যাম এবং 2 জিবি সোয়্যাপের সাথে। সার্ভারটি একটি মাইএসকিউএল ডিবি চালাচ্ছে যা বেশিরভাগ র্যাম ব্যবহারের জন্য সেট আপ করা হয়।
কিছু সময় চলার পরে সার্ভারটি অনাকাঙ্ক্ষিত পৃষ্ঠাগুলি অদলবদল করতে অদলবদল শুরু করে। এটি ঠিক আছে যেহেতু আমার অদলবদল ডিফল্ট 60 এ এবং এটি প্রত্যাশিত আচরণ।
আশ্চর্যের বিষয়টি হ'ল শীর্ষ / মেমিনফোতে সংখ্যাগুলি প্রক্রিয়াগুলি থেকে প্রাপ্ত তথ্যের সাথে মিলে না। অর্থাৎ সার্ভার এই সংখ্যাগুলি রিপোর্ট করছে:
/proc/meminfo:
SwapCached: 24588 kB
SwapTotal: 2097148 kB
SwapFree: 865912 kB
top:
Mem: 28189800k total, 27583776k used, 606024k free, 163452k buffers
Swap: 2097148k total, 1231512k used, 865636k free, 6554356k cached
যদি আমি /server//a/423603/98204 থেকে স্ক্রিপ্টটি ব্যবহার করি তবে এটি যুক্তিসঙ্গত সংখ্যা (বাশ'স, সিস্টেমড, ইত্যাদি দ্বারা অদলবদল করা কয়েকটি এমবি) এবং মাইএসকিউএল থেকে একটি বড় বরাদ্দের রিপোর্ট করে (আমি প্রচুর আউটপুট লাইন বাদ দিয়েছি) ):
892 [2442] qmgr -l -t fifo -u
896 [2412] /usr/libexec/postfix/master
904 [28382] mysql -u root
976 [27559] -bash
984 [27637] -bash
992 [27931] SCREEN
1000 [27932] /bin/bash
1192 [27558] sshd: admin@pts/0
1196 [27556] sshd: admin [priv]
1244 [1] /usr/lib/systemd/systemd
9444 [26626] /usr/bin/perl /bin/innotop
413852 [31039] /usr/libexec/mysqld --basedir=/usr --datadir=/data/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/data/mysql/err --open-files-limit=8192 --pid-file=/data/mysql/pid --socket=/data/mysql/mysql.sock --port=3306
449264 Total Swap Used
সুতরাং আমি যদি স্ক্রিপ্ট আউটপুট সঠিকভাবে পাই তবে মোট সোয়াপ ব্যবহার 449264 কে = সিএ হওয়া উচিত। মাইএসকিএল সহ 440 এমবি সিএ ব্যবহার করে অদলবদলের 90%।
প্রশ্নটি হল কেন এটি শীর্ষ এবং মেমিনফো সংখ্যার থেকে এত আলাদা? সমস্ত প্রক্রিয়া থেকে অদলবদলের ব্যবহারের সংমিশ্রণের পরিবর্তে অদলবদলে আসলে কী আছে তা দেখার জন্য কীভাবে "ডাম্প" করার উপায় আছে?
ইস্যুটি বিশ্লেষণ করার সময় আমি বিভিন্ন ধারণা নিয়ে এসেছি তবে সেগুলি সমস্তই ভুল বলে মনে হচ্ছে:
- স্ক্রিপ্ট আউটপুট কেবি তে নেই। এটি 512 বা 4KB ইউনিটে থাকলেও এটি মেলে না। আসলে অনুপাত (1200: 440) প্রায় 3: 1 যা "অদ্ভুত" সংখ্যা।
- অদলবদলে কিছু পৃষ্ঠা রয়েছে যা /server//a/477664/98204 এ উল্লিখিত প্রক্রিয়াগুলির মধ্যে একরকম ভাগ করে নেওয়া হয়েছে । যদি এটি সত্য হয় তবে কীভাবে আমি এরকম ব্যবহৃত মেমরির প্রকৃত সংখ্যাটি খুঁজে পেতে পারি? আমার অর্থ এটির জন্য সিসিএ 800MB পার্থক্য করা দরকার। এবং এই পরিস্থিতিতে ঠিক শোনাচ্ছে না।
- ইতিমধ্যে সমাপ্ত প্রক্রিয়া দ্বারা অদলবদলে ব্যবহৃত কিছু "পুরানো" পৃষ্ঠা রয়েছে। আমি কিছু মনে করব না যে আমি যদি এই "মুক্তযোগ্য" অদলবদলটি কতটা খুঁজে পেতে পারি।
- অদলবদলে এমন পৃষ্ঠাগুলি রয়েছে যা মেমোরিতে ফিরে অদলবদল হয়ে গেছে এবং কেবলমাত্র যদি তারা র্যামে পরিবর্তন না করে এবং /server//a/100636/98204 তে উল্লিখিতভাবে আবার অদলবদল করা দরকার তখনই অদলবদল হয় । তবে অদলবদলের মানটি কেবল 24MB।
আশ্চর্যের বিষয় হ'ল অদলবদলের ব্যবহার ধীরে ধীরে বৃদ্ধি পাচ্ছে যখন স্ক্রিপ্ট থেকে যোগফল প্রায় একই রকম। সর্বশেষ 3 দিনে ব্যবহৃত অদলবদল 1100MB থেকে বর্তমান 1230MB তে বেড়েছে যখন যোগফল 430MB থেকে বর্তমান 449MB (সিএ) হয়েছে।
সার্ভারে পর্যাপ্ত ফ্রি (সক্ষম) র্যাম রয়েছে তাই আমি কেবল অদলবদল বন্ধ করে এটিকে আবার চালু করতে পারি। অথবা আমি সম্ভবত 0 এ অদলবদল সেট করতে পারলাম তাই যদি অন্য কোনও উপায় না হয় তবে অদলবদলটি কেবলমাত্র ব্যবহৃত হবে। তবে আমি ইস্যুটি সমাধান করতে বা কমপক্ষে এটির কারণ কী তা খুঁজে বের করতে চাই।