एक NUMA नोड से दूसरे NUMA नोड में प्रक्रिया के सभी मेमोरी पेजों को कैसे स्थानांतरित करें?


10

लिनक्स में, मैं केवीएम वर्चुअल मशीन के मेमोरी पेज को एक NUMA नोड से दूसरे NUMA नोड पर रनटाइम पर माइग्रेट करना चाहता हूं। लेकिन मुझे केवीएम हाइपरवाइजर या libvirt API का उपयोग करने के लिए कोई इंटरफेस नहीं मिला। तब मैंने numa_migrate_pagesफ़ंक्शन का उपयोग करने का प्रयास किया -lnuma, और VM प्रक्रिया के मेमोरी पेजों को माइग्रेट किया। लेकिन मैंने पाया कि numa_migrate_pagesफ़ंक्शन केवल कुछ पृष्ठों को स्थानांतरित कर सकता है, यह सभी पृष्ठों को स्थानांतरित नहीं कर सकता है। उदाहरण के लिए, नीचे दिया गया पाठ इस वीएम प्रक्रिया के मेमोरी पेज वितरण को दिखाता है:

Node0:  0             pages
Node1:  1538          pages
Node2:  270641        pages
Node3:  552           pages

और मैं Node2 के सभी पेजों को Node0 में माइग्रेट करना चाहता हूं। लेकिन numa_migrate_pagesफ़ंक्शन का उपयोग करने के बाद , केवल कुछ पृष्ठ माइग्रेट किए जाते हैं, जैसा कि नीचे दिए गए पाठ से पता चलता है:

Node0:  7952          pages
Node1:  1538          pages
Node2:  262113        pages
Node3:  552           pages

फिर मैंने फ़ाइल को खोला , और पाया कि Node2 पर छोड़े गए अधिकांश पृष्ठ अनाम और गंदे पृष्ठ हैं:/proc/[pid of VM process]/numa_maps

7f572c000000 default anon=262143 dirty=262143 N2=262113 ...

तो क्यों Node2 के सभी पृष्ठ Node0 में माइग्रेट नहीं किए जा सकते? यहाँ क्या समस्या है?


3
पाठ चिपकाते समय छवियों को पोस्ट न करें। छवियों को उत्तर में खोजा या पेस्ट नहीं किया जा सकता है, और मॉनिटर पर भी आपके लिए अलग से नहीं पढ़ा जा सकता है (जैसे कि बड़े, उच्च-रिज़ॉल्यूशन मॉनिटर पर अपठित छोटे फोंट) या स्क्रीन-रीडर सॉफ़्टवेयर का उपयोग करके दृष्टिबाधित उपयोगकर्ताओं द्वारा जॉज़।
कैस

मुझे लगता है कि आप सुमा माइग्रेट पृष्ठों को रूट के रूप में चला रहे हैं?
18 मार्च को लमवांगी जू

@ लमवांगी हां, मैं जड़ के रूप में चल रहा हूं।
जेंसन

क्या लेनदेन को पूरा करने के लिए Node0 पर पर्याप्त स्वतंत्र पृष्ठ हैं?
एरोन वालरस्टीन

जवाबों:


1

आप पैकेज migratepagesमें बाइनरी चाहते हैं numactl

उपयोग और उदाहरण

sudo migratepages $VM_PID $SRC_NODE $DEST_NODE
sudo migratepages 12345 2 0

सीमाएं

VM हार्डवेयर

पृष्ठों को एक नोड में बंद किया जा सकता है, जैसे। यदि वे हार्डवेयर पास-थ्रू से संबंधित हैं और वे एक विशिष्ट नोड पर स्थित हार्डवेयर का प्रतिनिधित्व करते हैं।

नि: शुल्क मेमोरी और पेज का आकार

आपको स्पष्ट रूप से गंतव्य नोड पर पर्याप्त मुक्त मेमोरी की आवश्यकता है, लेकिन बड़े पृष्ठों को स्थानांतरित करने के लिए इसे भी खंडित नहीं करना होगा। यदि पृष्ठों में से एक एक बड़ा ऑर्डर सन्निहित आवंटन है, और गंतव्य नोड मुक्त मेमोरी में कोई मुक्त क्षेत्र नहीं है, तो बड़े पृष्ठ को स्थानांतरित करना विफल हो सकता है (गणना के आधार पर ट्रिगर और सफल होने के आधार पर)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.