লিনাক্সে, আমি কেভিএম ভার্চুয়াল মেশিনের মেমরি পৃষ্ঠাগুলি রানটাইমের সময় একটি NUMA নোড থেকে অন্য একটি NUMA নোডে স্থানান্তর করতে চাই। তবে কেভিএম হাইপারভাইজারে বা libvirt এপিআই ব্যবহার করে এটি করার জন্য আমি কোনও ইন্টারফেস পাই না। তারপরে আমি numa_migrate_pages
ফাংশনটি ব্যবহার করতে -lnuma
এবং ভিএম প্রক্রিয়ার মেমরি পৃষ্ঠাগুলি স্থানান্তরিত করার চেষ্টা করেছি । তবে আমি দেখতে পেয়েছি যে numa_migrate_pages
ফাংশনটি কেবলমাত্র কয়েকটি পৃষ্ঠাগুলি স্থানান্তর করতে পারে, এটি সমস্ত পৃষ্ঠা সরিয়ে নিতে পারে না। উদাহরণস্বরূপ, নীচের পাঠ্যটি এই ভিএম প্রক্রিয়াটির মেমরি পৃষ্ঠাগুলি বিতরণ দেখায়:
Node0: 0 pages
Node1: 1538 pages
Node2: 270641 pages
Node3: 552 pages
এবং আমি নোড 2-এর সমস্ত পৃষ্ঠা নোড0-তে স্থানান্তর করতে চাই। তবে numa_migrate_pages
ফাংশনটি ব্যবহার করার পরে , কেবল কয়েকটি পৃষ্ঠাগুলি স্থানান্তরিত হবে, যেমন নীচের পাঠ্যটি দেখায়:
Node0: 7952 pages
Node1: 1538 pages
Node2: 262113 pages
Node3: 552 pages
তারপরে আমি ফাইলটি খুলি এবং দেখতে পাচ্ছি যে নোড 2 এ থাকা বেশিরভাগ পৃষ্ঠাগুলি বেনামে এবং মলিন পৃষ্ঠা:/proc/[pid of VM process]/numa_maps
7f572c000000 default anon=262143 dirty=262143 N2=262113 ...
তাহলে নোড 2-এর সমস্ত পৃষ্ঠা নোড0-এ স্থানান্তরিত করা যাবে না কেন? এখানে সমস্যা কি?