আমি গতকাল কেবলমাত্র আমার প্রয়োজনের জন্য এটি অনুসন্ধান করতে শুরু করেছি, নীচে আমি এখন পর্যন্ত যা পেয়েছি তা হল:
SWAP_USED = ব্যবহৃত_বাই_প্রোসেসস + অদলবদল করা + অংশ_মোহী_কম্পস + কিছু_একটি
ছোট গল্প:
Used_by_Processes - ডেটা যা সম্পূর্ণরূপে মেমরি থেকে সরে যায়।
সোয়াপকাড - এমন ডেটা যা ডিস্কে অদলবদল করা হয়েছিল, কিন্তু এখনও স্মৃতিতে রয়ে গেছে।
Part_of_Tmpfs - tmpfs ডেটার কিছু অংশ।
দীর্ঘ কাহিনী:
ব্যবহৃত_বাই_প্রোসেসেস - এটিতে কীভাবে ভুল গণনা করা যায় তার উপর অনেকগুলি নির্দেশাবলী প্রকাশিত হয় ;) উদাহরণস্বরূপ, যদি আমরা সমস্ত প্রবেশিকা VmSwap
থেকে /proc/*/status
বা Swap
এন্ট্রিগুলি যোগ /proc/*/smaps
করি - আমরা একটি অতিসত্তর পেতে পারি (ভাগ করে নেওয়া পৃষ্ঠাগুলি একাধিকবার গণনা করতে পারে)। আমরা যদি এটি root
ব্যবহারকারীর বা আমাদের ওএস থেকে চালনা না করি - অবমূল্যায়নটি নিঃশব্দে ফিরে আসবে। আমার কাছে ভাগ করা পৃষ্ঠাগুলি সনাক্ত করার উপযুক্ত উপায় নেই তবে একই 'মানচিত্রের' স্প্ল্যাশ করা অন্যান্য পদ্ধতির তুলনায় আরও ভাল অনুমানকে দেয় : (লক্ষ্য করুন যে cat
নীচে নিরর্থক নয় এবং আসলে এটির প্রয়োজন 2>/dev/null
)
[root@a:~]# cat /proc/*/status|awk ' /^VmSwap/{ s+=$2 }END{print s}'
32048
[root@a:~]# cat /proc/*/smaps|awk ' /^Swap/{ s+=$2 }END{print s}'
32048
[root@a:~]# cat /proc/*/smaps|awk '/-/{r=$0}/^Swap/{if(R[r]!=1)s+=$2;R[r]=1}END{print s}'
14940
[root@a:~]# free -k|grep -e Swap -e used
total used free shared buffers cached
Swap: 8388600 15508 8373092
অদলবদল - এটি একদম সোজা এবং পরিষ্কারভাবে এখান থেকে বের করা যেতে পারে /proc/meminfo
। কিছু লোক এটিকে "ব্যবহৃত" অদলবদল হিসাবে গণ্য করার প্রত্যাশা করবে না, যেহেতু র্যাম এবং সোয়াপ উভয়ই একই পৃষ্ঠার অনুলিপি (নন-নোংরা) অনুলিপি তত্ক্ষণাত উভয় পক্ষেই মুক্তি দেওয়া যেতে পারে (যদি চাহিদা আসে তবে) এভাবে তৈরি করা একটি অনুলিপি "মুক্তি"।
পার্ট_এফ_এমপিএফস - উজ্জ্বল দিকটি হ'ল যখন আপনার সমস্ত টিএমপিএফস ডেটা বহু-দিনের-অচ্ছুত থাকে এবং swappiness
শূন্য হয় না - সম্ভবত পুরো টিএমপিএফগুলি সরিয়ে নেওয়া হয়েছে (এবং সাম্প্রতিক ব্যবহৃত ডেটার বিপরীতে)। অবক্ষয়টি হ'ল আমি প্রাপ্য র্যাম থাকলেও তার কতটা অদলবদল হয় তার প্রান্তিক পরিমাণ বা শতাংশের নির্ভরযোগ্যতার সাথে গণনা করার জন্য আমি কোনও এপিআই পাইনি - আমরা সম্পূর্ণ টিএমপিএফএস ডেটা অনুলিপি করতে পারি /dev/null
এবং এইভাবে এর কতটা অদলবদল হয়েছিল সে সম্পর্কে কিছু ধারণা পাওয়া যায়।
Tmpfs আকার গণনার সময় করা সাধারণ ভুলগুলি /dev/shm
হ'ল - ধরে নেওয়া যায় যে একমাত্র tmpfs কনফিগার করা হয়েছে বা প্রতি ফাইল স্ক্যান করে পুনরাবৃত্ত করার মাধ্যমে এটি করার চেষ্টা করছে (কেবল বাস্তবায়নগুলি লুকানো ফাইল বাদ দিতে বা root
এটি অ-পরিবর্তন থেকে করতে পারে না , তবে এটি অ-অদলবদলও করে ট্র্যাভারিংয়ের সময় কিছু পৃষ্ঠা)। খুব সহজ উপায় ভাল পুরানো ব্যবহার করা হয় df
।
কিছুনি_সেরা - diff 385 MB
নীচে " " দেখুন, কার্নেলের উত্সগুলিতে ডুব দেওয়া দরকার। আমার স্ক্রিপ্ট দেখুন:
#!/bin/bash
TMPFS=`df -kP |awk ' /^tmpfs/{ s+=$3 }END{print int( s/1024)}'`
PROCS=`cat /proc/*/smaps|awk '/-/{r=$0} /^Swap/{if(R[r]!=1)s+=$2;R[r]=1}END{print int( s/1024)}'`
SCACH=`cat /proc/meminfo|awk ' /^SwapCached/ {print int($2/1024)}'`
TOTAL=`free -k |awk ' /^Swap/ {print int($3/1024)}'`
echo -e " df $TMPFS\t smaps $PROCS \tSwapCache $SCACH\t| $TOTAL\tswap | diff $[TOTAL-TMPFS-PROCS-SCACH]\tMB"
এবং বিভিন্ন বাক্স থেকে আউটপুট:
xa002: df 0 smaps 271 SwapCache 3858 | 4120 swap | diff -9 MB
sg003: df 0 smaps 234 SwapCache 3876 | 4111 swap | diff 1 MB
sg001: df 0 smaps 245 SwapCache 3845 | 4093 swap | diff 3 MB
sg002: df 0 smaps 244 SwapCache 3843 | 4091 swap | diff 4 MB
dm001: df 2 smaps 971 SwapCache 728 | 1707 swap | diff 6 MB
hm012: df 270 smaps 161 SwapCache 29 | 454 swap | diff -6 MB
hm003: df 274 smaps 142 SwapCache 27 | 440 swap | diff -3 MB
hm006: df 262 smaps 150 SwapCache 29 | 437 swap | diff -4 MB
hm002: df 265 smaps 120 SwapCache 28 | 412 swap | diff -1 MB
hm009: df 258 smaps 124 SwapCache 33 | 410 swap | diff -5 MB
hm011: df 262 smaps 118 SwapCache 28 | 406 swap | diff -2 MB
hm008: df 245 smaps 122 SwapCache 32 | 396 swap | diff -3 MB
hm005: df 247 smaps 120 SwapCache 33 | 396 swap | diff -4 MB
dp001: df 0 smaps 0 SwapCache 0 | 386 swap | diff 386 MB
hm014: df 184 smaps 134 SwapCache 34 | 343 swap | diff -9 MB
hm007: df 0 smaps 132 SwapCache 32 | 158 swap | diff -6 MB
bm002: df 0 smaps 121 SwapCache 25 | 141 swap | diff -5 MB
dm002: df 2 smaps 70 SwapCache 71 | 139 swap | diff -4 MB
bm001: df 3 smaps 102 SwapCache 28 | 131 swap | diff -2 MB
bm004: df 0 smaps 98 SwapCache 29 | 126 swap | diff -1 MB
hm013: df 0 smaps 100 SwapCache 30 | 124 swap | diff -6 MB
bm006: df 0 smaps 103 SwapCache 15 | 122 swap | diff 4 MB
hm010: df 0 smaps 102 SwapCache 24 | 122 swap | diff -4 MB
hm001: df 0 smaps 101 SwapCache 25 | 121 swap | diff -5 MB
bm003: df 0 smaps 98 SwapCache 15 | 107 swap | diff -6 MB
bm005: df 0 smaps 70 SwapCache 17 | 85 swap | diff -2 MB
sg004: df 0 smaps 72 SwapCache 14 | 83 swap | diff -3 MB
sg001: df 0 smaps 41 SwapCache 33 | 78 swap | diff 4 MB
sg005: df 0 smaps 59 SwapCache 20 | 75 swap | diff -4 MB
sg003: df 0 smaps 58 SwapCache 18 | 72 swap | diff -4 MB
sg006: df 0 smaps 56 SwapCache 13 | 65 swap | diff -4 MB
sg002: df 0 smaps 54 SwapCache 12 | 64 swap | diff -2 MB
xa001: df 0 smaps 56 SwapCache 5 | 55 swap | diff -6 MB
এবং বোনাস হিসাবে একটি ছোট পরীক্ষা:
[root@hm012:~]# df -h|grep -e '^Filesystem' -e '^tmpfs'
Filesystem Size Used Avail Use% Mounted on
tmpfs 12G 271M 12G 3% /dev/shm
tmpfs 8.0G 84K 8.0G 1% /tmp
[root@hm012:~]# ./get_swap.sh
df 270 smaps 161 SwapCache 29 | 454 swap | diff -6 MB
[root@hm012:~]# rm -rf /dev/shm/*
[root@hm012:~]# df -h|grep -e '^Filesystem' -e '^tmpfs'
Filesystem Size Used Avail Use% Mounted on
tmpfs 12G 0 12G 0% /dev/shm
tmpfs 8.0G 84K 8.0G 1% /tmp
[root@hm012:~]# ./get_swap.sh
df 0 smaps 161 SwapCache 29 | 185 swap | diff -5 MB
পিএস উপরে উল্লিখিত অনুমানটি বাদ দিয়ে - ত্রুটির অন্যান্য উত্সগুলি রয়েছে, যেমন এমবিতে কেবি গোল করা, র্যাম এবং স্ব্যাপের ব্লক-আকারের মধ্যে কোনও মিল নেই এমন তাত্ত্বিক সম্ভাবনা I'm কিছুটা সাহায্য করে :)
VmSwap
লাইনে প্রদর্শিত মান ব্যতীত অন্য কিছু দেয়/proc/PID/status
? প্রশ্নটি একটি সুন্দর প্রদর্শনের জন্য জিজ্ঞাসা করছে না, এটি প্রক্রিয়া ডেটা বাদে অন্য কিছুতে অদলবদল হতে পারে তা জিজ্ঞাসা করছে।