কমান্ড-লাইনটি ব্যবহার করে আমি আমার সিপিইউ ক্যাশের আকারটি কীভাবে দেখতে পারি?
আমি L1, L2 এবং L3 ক্যাশে তথ্য দেখতে চাই।
এছাড়াও, কেবল ক্যাশে থাকা তথ্যগুলি আউটপুট করা কি সম্ভব হবে , যাতে অন্য সমস্ত তথ্য ফিল্টার আউট হয়?
কমান্ড-লাইনটি ব্যবহার করে আমি আমার সিপিইউ ক্যাশের আকারটি কীভাবে দেখতে পারি?
আমি L1, L2 এবং L3 ক্যাশে তথ্য দেখতে চাই।
এছাড়াও, কেবল ক্যাশে থাকা তথ্যগুলি আউটপুট করা কি সম্ভব হবে , যাতে অন্য সমস্ত তথ্য ফিল্টার আউট হয়?
উত্তর:
lscpu
আপনি অনুসন্ধান করছেন তথ্য সরবরাহ করবে।
lscpu | grep "cache"
শুধুমাত্র ক্যাশে তথ্য ফিল্টার আউট। এর ফলে এমন কিছু হবে:
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
সেটির sysfs
for d in /sys/devices/system/cpu/cpu0/cache/index*;
do tail -c+1 $d/{level,type,size}
echo
done
দেয়:
==> /sys/devices/system/cpu/cpu0/cache/index0/level <==
1
==> /sys/devices/system/cpu/cpu0/cache/index0/type <==
Data
==> /sys/devices/system/cpu/cpu0/cache/index0/size <==
32K
==> /sys/devices/system/cpu/cpu0/cache/index1/level <==
1
==> /sys/devices/system/cpu/cpu0/cache/index1/type <==
Instruction
==> /sys/devices/system/cpu/cpu0/cache/index1/size <==
32K
==> /sys/devices/system/cpu/cpu0/cache/index2/level <==
2
==> /sys/devices/system/cpu/cpu0/cache/index2/type <==
Unified
==> /sys/devices/system/cpu/cpu0/cache/index2/size <==
256K
==> /sys/devices/system/cpu/cpu0/cache/index3/level <==
3
==> /sys/devices/system/cpu/cpu0/cache/index3/type <==
Unified
==> /sys/devices/system/cpu/cpu0/cache/index3/size <==
8192K
getconf
getconf -a | grep CACHE
দেয়:
LEVEL1_ICACHE_SIZE 32768
LEVEL1_ICACHE_ASSOC 8
LEVEL1_ICACHE_LINESIZE 64
LEVEL1_DCACHE_SIZE 32768
LEVEL1_DCACHE_ASSOC 8
LEVEL1_DCACHE_LINESIZE 64
LEVEL2_CACHE_SIZE 262144
LEVEL2_CACHE_ASSOC 8
LEVEL2_CACHE_LINESIZE 64
LEVEL3_CACHE_SIZE 20971520
LEVEL3_CACHE_ASSOC 20
LEVEL3_CACHE_LINESIZE 64
LEVEL4_CACHE_SIZE 0
LEVEL4_CACHE_ASSOC 0
LEVEL4_CACHE_LINESIZE 0
বা একক স্তরের জন্য:
getconf LEVEL2_CACHE_SIZE
এই ইন্টারফেসটি সম্পর্কে দুর্দান্ত জিনিসটি হ'ল এটি পসিক্স sysconf
সি ফাংশনটির চারপাশে কেবল একটি মোড়ক (ক্যাশে আর্গুমেন্টগুলি নন-পসিক্স এক্সটেনশনগুলি) এবং তাই এটি সি কোড থেকেও ব্যবহার করা যেতে পারে।
উবুন্টু 16.04 এ পরীক্ষিত।
x86 সিপিইউডির নির্দেশনা
সিপিইউডিএক্স x86 নির্দেশে ক্যাশে সম্পর্কিত তথ্যও সরবরাহ করা হয় এবং এটি ব্যবহারকারীর মাধ্যমে সরাসরি অ্যাক্সেস করা যায়: https://en.wikedia.org/wiki/CPUID
glibc x86- এর জন্য এই পদ্ধতিটি ব্যবহার করছে বলে মনে হচ্ছে। পদক্ষেপ ডিবাগিং / নির্দেশের ট্রেসিং দ্বারা আমি নিশ্চিত করেছিলাম না, তবে ২.২৮ এর উত্সটি sysdeps/x86/cacheinfo.c
তা করে:
__cpuid (2, eax, ebx, ecx, edx);
টুডো এখন একটি স্বল্প ন্যূনতম সি উদাহরণ তৈরি করুন, এখানে জিজ্ঞাসা করা হয়েছে: https://stackoverflow.com
ক্যাশ সাইজ আইডি রেজিস্টার (সিসিএসআইডিআর) এর মতো রেজিস্টারগুলির মাধ্যমে ক্যাশে আকারগুলি খুঁজতে আর্মের একটি আর্কিটেকচার-সংজ্ঞায়িত প্রক্রিয়াও রয়েছে, একটি সংক্ষিপ্তসার জন্য এআরএমভি 8 প্রোগ্রামারগুলির ম্যানুয়াল 11.6 "ক্যাশে আবিষ্কার" দেখুন।
সমস্ত বিদ্যমান ক্যাশে-সম্পর্কিত ফোল্ডারগুলির আকার তালিকাবদ্ধ করতে কমান্ডের নীচে সন্ধান করুন।
for i in $(find / -iname '*cache*'); do du -sh $i ; done 2> /dev/null | grep 'G\|M\|K\|B'| nl