मैं यह पता लगाने की कोशिश कर रहा हूं कि एक संशोधित सी प्रोग्राम अपने गैर संशोधित काउंटर भाग से तेज़ी से क्यों चल रहा है (मैं कुछ अतिरिक्त काम करने के लिए कोड की बहुत कम पंक्तियां जोड़ रहा हूं)। इस संदर्भ में, मुझे मुख्य स्पष्टीकरण (निर्देश कैश) होने के लिए "कैश प्रभाव" पर संदेह है। इस प्रकार मैं perf
(https://perf.wiki.kernel.org/index.php/Main_Page) प्रोफाइलिंग टूल तक पहुंचता हूं लेकिन दुर्भाग्यवश मैं कैश मिस के संबंध में अपने आउटपुट के अर्थ को समझने में सक्षम नहीं हूं। कैश के बारे मेंपरफ कैश घटनाओं का अर्थ क्या है?
कई घटनाओं प्रदान की जाती हैं:
cache-references [Hardware event]
cache-misses [Hardware event]
L1-dcache-loads [Hardware cache event]
L1-dcache-load-misses [Hardware cache event]
L1-dcache-stores [Hardware cache event]
L1-dcache-store-misses [Hardware cache event]
L1-dcache-prefetches [Hardware cache event]
L1-dcache-prefetch-misses [Hardware cache event]
L1-icache-loads [Hardware cache event]
L1-icache-load-misses [Hardware cache event]
L1-icache-prefetches [Hardware cache event]
L1-icache-prefetch-misses [Hardware cache event]
LLC-loads [Hardware cache event]
LLC-load-misses [Hardware cache event]
LLC-stores [Hardware cache event]
LLC-store-misses [Hardware cache event]
LLC-prefetches [Hardware cache event]
LLC-prefetch-misses [Hardware cache event]
dTLB-loads [Hardware cache event]
dTLB-load-misses [Hardware cache event]
dTLB-stores [Hardware cache event]
dTLB-store-misses [Hardware cache event]
dTLB-prefetches [Hardware cache event]
dTLB-prefetch-misses [Hardware cache event]
iTLB-loads [Hardware cache event]
iTLB-load-misses [Hardware cache event]
branch-loads [Hardware cache event]
branch-load-misses [Hardware cache event]
node-loads [Hardware cache event]
node-load-misses [Hardware cache event]
node-stores [Hardware cache event]
node-store-misses [Hardware cache event]
node-prefetches [Hardware cache event]
node-prefetch-misses [Hardware cache event]
मैं इन क्षेत्रों के बारे में स्पष्टीकरण कहाँ से मिलेगी? कैश-मिस इवेंट अन्य घटनाओं से हमेशा छोटा होता है। यह घटना क्या मापती है?
निम्नलिखित उदाहरण में एलएस बनाम 5,708 कैश-मिस बनाम 26,760 एल 1-आईस्कैच-लोड-मिस की व्याख्या कैसे करें?
perf stat -e L1-icache-load-misses ls
caches caches~ out
Performance counter stats for 'ls':
26,760 L1-icache-load-misses
0.002816690 seconds time elapsed
perf stat -e cache-misses ls
caches caches~ out
Performance counter stats for 'ls':
5,708 cache-misses
0.002822122 seconds time elapsed
जवाब के लिए धन्यवाद मेल खाती है। क्या आप इस उपकरण का उपयोग कर रहे हैं?हार्डवेयर कैश इवेंट के रूप में संदर्भित कैश-मिस इवेंट और हार्डवेयर कैश ईवेंट के बारे में आप कैसे समझाते हैं। हालांकि यह दूसरों का योग था लेकिन बिलकुल नहीं। –
और इसके अलावा "लोड" और "प्रीफेच" के बीच क्या अंतर है? –
@ मैनुअल सेल्वा: मैं खुद को 'perf' का उपयोग नहीं कर रहा हूं, इसलिए मेरे पास थोड़ा वास्तविक अनुभव नहीं है। विशेष रूप से, मैं अनिश्चित हूं कि सभी हार्डवेयर कैश घटनाओं की तुलना में 'कैश-मिस' घटना वास्तव में क्या वर्णन करती है। मैं prefetches के बारे में पूरी तरह से निश्चित नहीं हूं: एप्लिकेशन स्तर पर prefetches को ट्रिगर करने के साथ-साथ हार्डवेयर द्वारा भविष्यवाणी की गई डेटा पहुंच के स्वचालित प्रीफ़ेच करने का एक तरीका भी है। इनमें से कोई भी या दोनों हो सकता है कि प्रीफेच काउंटर वास्तव में वर्णन करते हैं। 'perf' दस्तावेज आगे के विवरण के लिए निर्माता चश्मा का उल्लेख करता है, लेकिन मुझे अभी तक प्रासंगिक अनुभाग नहीं मिला है। – MvG