मेरे पास 2.6.35 PREEMPT कर्नेल है जो मध्यम-गति वाले ARMv7 प्रोसेसर पर चल रहा है। प्रत्येक 100 - 125 के बारे में एक बार, कुछ कर्नेल को कुछ ऑडियो-संबंधित ड्राइवरों को संसाधित करने में विफल होने का कारण बनता है ताकि अंडररुन्स से बचने के लिए पर्याप्त रूप से जल्दी से। होल्ड-अप आम तौर पर 15-30ms की सीमा में होता है, लेकिन यह बहुत लंबा हो सकता है। यह स्पष्ट नहीं है कि होल्ड-अप पूरी तरह से कर्नेल है या वास्तविक समय की प्राथमिकता (SCHED_RR, 2) के साथ चलने वाली उपयोगकर्ता प्रक्रिया के निर्धारण से संबंधित हो सकता है।
मेरा अनुमान है कि एक (कम से कम एक) ड्राइवर है जो प्रीमेच के साथ अच्छा नहीं खेल रहा है।
उपयोगकर्ता प्रक्रिया से कुछ स्ट्रेस आउटपुट सामान्य और असामान्य व्यवहार दोनों के कुछ पहलू को दिखाता है, हालांकि मुझे निश्चित नहीं है कि विभिन्न समय रिपोर्टों की व्याख्या कैसे करें?
सामान्य मामला:
0.000518 पोल ([{fd = 10, घटनाएँ = POLLIN | POLLERR | POLLNVAL, घूमता है = POLLIN}], 1, 3415) = 1 0.010202 पोल ([{fd = 10, इवेंट्स = POLLIN | POLLERNVAL}, {fd = 6, इवेंट्स = POLLOUT | POLLERR | POLLNVAL, revents = POLLONVAL}, 2, 3404) = 1 0.000585 पोल ([{fd = 10, इवेंट्स = POLLIN | POLLNVAL}, {fd = 6, इवेंट्स = POLLOUT | POLLERR | POLLNVAL, revents = POLLNV}], 2, 3404) = 1 0.000302 पोल ([{fd = 10, इवेंट्स = POLLIN | POLLERR | POLLNVAL, revents = POLLIN}], 1, 3404) = 1 होप 706 पोल ([{fd = 10, इवेंट्स = POLLIN | POLLERNVAL}, {fd = 6, इवेंट्स = POLLOUT | POLLERR | POLLNVAL, revents = POLLNVAL}, 2, 3393) = 1 0.000480 पोल ([{fd = 10, इवेंट्स = POLLIN | POLLNVAL}, {fd = 6, इवेंट्स = POLLOUT | POLLERR | POLLNVAL, revents = POLLNV}], 2, 3392) = 1
Fd6 पर आउटपुट के लिए पोल पर कोई ब्लॉकिंग नहीं होती है और जब केवल fd10 को इनपुट के लिए चुना जाता है, तो लगभग 10ms का ब्लॉक होता है। यह सिस्टम कॉल की अवधि और सिस्टम कॉल के बीच अंतराल (वे संगत हैं) की रिपोर्ट में दोनों परिलक्षित होता है।
विफलता का मामला (चरम उदाहरण):
0.000305 पोल ([{fd = 10, इवेंट्स = POLLIN | POLLERR | POLLNVAL, revents = POLLIN}], 1, 3543) = 1 0.010730 पोल ([{fd = 10, इवेंट्स = POLLIN | POLLERNVAL}, {fd = 6, इवेंट्स = POLLOUT | POLLERR | POLLNVAL, revents = POLLNVAL}, 2, 3533) = 1 0.000475 पोल ([{fd = 10, इवेंट्स = POLLIN | POLLNVAL}, {fd = 6, इवेंट्स = POLLOUT | POLLERR | POLLNVAL, revents = POLLNV}], 2, 3532) = 1 0.000329 पोल ([{fd = 10, घटनाएँ = POLLIN | POLLERR | POLLNVAL, घूमता है = POLLIN}], 1, 3532) = 1 0.953349 पोल ([{fd = 10, इवेंट्स = POLLIN | POLLNVAL}, {fd = 6, इवेंट्स = POLLOUT | POLLERR | POLLNVAL, घूमता है = POLLNVAL}, 2, 2578) = 1
इस मामले में सूचना कि, भले ही दूसरी-आखिरी कॉल 10ms (सामान्य) लेने के रूप में दर्ज की गई हो, यह अंतिम कॉल से पहले 953ms है।
अपराधी को ट्रैक करने के लिए मैं किन उपकरणों का उपयोग कर सकता हूं?