المقدمة
يصف هذا المستند إجراء تحليل المشكلة المتعلقة باستخدام الذاكرة المرتفع في عقد حوسبة مدير البنية الأساسية الظاهرية (CVIM) من Cisco.
المتطلبات الأساسية
المتطلبات
توصي Cisco بأن تكون لديك معرفة بإدارة الذاكرة و BigPages في Linux.
ما هي الصفحات الضخمة؟
يتيح تمكين BigPages لنظام التشغيل دعم صفحات الذاكرة الأكبر من الافتراضي (عادة 4 كيلوبايت). يمكن أن يؤدي إستخدام أحجام الصفحات الكبيرة جدا إلى تحسين أداء النظام عن طريق تقليل موارد النظام المطلوبة للوصول إلى إدخالات جدول الصفحات. نتيجة لذلك، يتم إستخدام الصفحات الكبيرة عادة لتقليل زمن الوصول إلى الذاكرة.
وصف المشكلة
تنبيهات الاستخدام العالي للذاكرة على عقد حوسبة CVIM بينما لم تقم CVIM بتشغيل أي تنبيهات. يمكن أن تتم التنبيهات المتعلقة باستخدام الذاكرة من خلال أداة مراقبة تابعة لجهة خارجية أو لوحة معلومات للمراقبة.
تحليل
يلاحظ إستخدام ذاكرة عالية في نظام التشغيل وفقا free
و sar
إخراج الأوامر في نظام التشغيل Linux.
[root@cvim-computex ~]# free -m
total used free shared buff/cache available
Mem: 385410 365882 7602 3621 11925 8411
Swap: 2047 0 2047
[root@cvim-computex ~]# sar -r
Linux 4.18.0-193.81.1.el8_2.x86_64 (pod1-compute4.mx2) 08/24/2023 _x86_64_ (112 CPU)
12:00:46 AM kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
12:10:34 AM 7493576 7871200 387166528 98.10 4240 9334356 12893752 3.25 4891940 6325076 68
12:20:11 AM 7503208 7883396 387156896 98.10 4240 9337364 12872708 3.24 4885008 6328096 16
12:30:34 AM 7485648 7869540 387174456 98.10 4240 9340556 12902748 3.25 4892948 6331276 36
12:40:46 AM 7494396 7880940 387165708 98.10 4240 9343636 12866964 3.24 4886908 6334364 20
12:50:34 AM 7479616 7869772 387180488 98.10 4240 9346720 12905156 3.25 4892408 6337444 56
01:00:46 AM 7490304 7883016 387169800 98.10 4240 9349832 12860152 3.24 4885308 6340500 56
01:10:34 AM 7472248 7868672 387187856 98.11 4240 9352836 12896932 3.25 4892604 6343556 28
01:20:46 AM 7484308 7883276 387175796 98.10 4240 9355948 12867972 3.24 4885172 6346676 16
01:30:34 AM 7475092 7869596 387185012 98.11 4240 9350840 12904328 3.25 4892448 6341556 44
01:40:46 AM 7485436 7882508 387174668 98.10 4240 9353932 12864252 3.24 4885148 6344660 56
01:50:34 AM 7468840 7869520 387191264 98.11 4240 9357036 12907464 3.25 4893552 6347752 164
02:00:46 AM 7479076 7882428 387181028 98.10 4240 9360124 12861892 3.24 4886044 6350844 68
أستخدم ps
الأمر لتحديد العمليات التي تستخدم أعلى إستخدام للذاكرة.
[root@cvim-computex ~]# ps -aux --sort -rss
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 328199 1207 0.2 541893584 ? RLl Mar12 2948779:31 /usr/bin/vpp -c /etc/vpp/vpp.conf
root 1829 0.0 0.0 379024 227692 ? Ss Mar12 14:21 /usr/lib/systemd/systemd-journald
تحقق من إستخدام ذاكرة الحاوية عن طريق التحقق من الإحصائيات باستخدام podman
أو docker
أوامر.
[root@cvim-computex ~]# podman stats
ID NAME CPU % MEM USAGE / LIMIT MEM % NET IO BLOCK IO PIDS
2f8fdc4b63a4 fluentd_31902 -- 301.2MB / 404.1GB 0.07% -- / -- 9.265MB / 89.68GB 75
34d806a30733 novalibvirt_31902 -- 42.16MB / 404.1GB 0.01% -- / -- 589.8kB / 22.13MB 44
48292d2fa956 novassh_31902 -- 5.882MB / 404.1GB 0.00% -- / -- 475.1kB / 167.3MB 2
7b2ce84e86b3 novacompute_31902 -- 231.8MB / 404.1GB 0.06% -- / -- 761.9kB / 2.43GB 49
89c01c14ef3f neutron_vpp_31902 -- 1.209GB / 404.1GB 0.30% -- / -- 0B / 7.66MB 35
استنادا إلى الإخراج المتوفر، يبدو أنه لا توجد عمليات تعرض إستخداما كبيرا للذاكرة. وبالاضافة إلى ذلك، يبدو ان الحاويات تستخدم كمية قليلة من الذاكرة.
يعرض الأمر free
ما زالت الأوامر تظهر إستخداما مرتفعا للذاكرة.
root@cvim-computex ~]# free -m
total used free shared buff/cache available
Mem: 385410 366751 7310 3496 11348 7696
Swap: 2047 5 2042
[root@cvim-computex ~]#
استكشاف الأخطاء وإصلاحها
لفهم إستخدام الذاكرة هذا، من الضروري معرفة ذاكرة BigPage.
في حالة تمكين POD مع BigPages، يجب توخي الحذر في إستخدام النكهة المناسبة، لضمان عدم إستخدام ذاكرة النظام لبدء تشغيل الأجهزة الافتراضية (VM). قد يؤدي إستخدام ذاكرة النظام للأجهزة الافتراضية (VM) إلى عدم إستقرار برنامج CVIM، حيث ينافس كل من حمل العمل والبنية الأساسية الموارد المخصصة للبنية الأساسية.
راجع الصفحات الكبيرة:
[root@cvim-computex ~]# tail /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
90001
[root@cvim-computex ~]# tail /sys/devices/system/node/node0/hugepages/hugepages-1048576kB/nr_hugepages
0
[root@cvim-computex ~]# tail /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
90000
[root@cvim-computex ~]# tail /sys/devices/system/node/node1/hugepages/hugepages-1048576kB/nr_hugepages
0
[root@cvim-computex ~]#
nr_hugepages
هو العدد الإجمالي ل BigPages.
(90001 + 9000) × 2M = 360 جيجابايت محجوز ل BigPage.
لاحظ أيضا أن 5٪ من إجمالي الذاكرة الفعلية محجوزة لصفحات الذاكرة العادية (4 كيلوبايت) لاستخدام نظام التشغيل حتى في حالة تكوين 100٪ BigPage.
385 جيجابايت (إجمالي حر) - 360 جيجابايت (محجوز ل BigPage) = 25 جيجابايت محجوز للصفحات العادية.
لذا، فإن الاستخدام العالي للذاكرة، كما لوحظ في sar
و free
أمر متوقع.
أستخدم الأمر المذكور للتحقق من الاستخدام الفعلي للذاكرة.
[root@mgmt-node ~]# ip -br -4 a s br_api
br_api UP 10.x.x.x/24
[root@mgmt-node ~]# curl -sS -g -u admin:password --cacert /var/www/mercury/mercury-ca.crt https://10.x.x.x:9090/api/v1/query --data-urlencode 'query=100 * (mem_free + mem_buffered + mem_cached) / ((mem_total - sum without(NUMAnode, pagename, pagesize) (hugepages_nr)) or mem_total)' | python -mjson.tool
sample output:
{
"status": "success",
"data": {
"resultType": "vector",
"result": [
{
"metric": {
"host": "cvim-computex",
"instance": "10.x.x.x:9273",
"job": "telegraf",
"node_type": "compute"
},
"value": [
1693479719.383,
"76.16486394450624" --> Actual available memory percentage.
]
},
{
"metric": {
"host": "cvim-computey",
"instance": "10.x.x.x:9273",
"job": "telegraf",
"node_type": "compute"
},
"value": [
1693479719.383,
"76.63431887455388"
تقوم CVIM بتشغيل تنبيه فقط عندما تكون الذاكرة المتوفرة أقل من 10٪.
اسم التنبيه - mem_available_percent
هناك أقل من 10٪ من ذاكرة النظام المتوفرة. يتم إستخدام ذاكرة 4 آلاف صفحة بشكل منتظم من قبل كل من النظام وخدمات البنية الأساسية ل OpenStack ولا تتضمن صفحات كبيرة. يمكن أن يشير هذا التنبيه إلى مقدار غير كاف من ذاكرة الوصول العشوائي (RAM) أو إستخدام غير عادي للذاكرة من قبل النظام أو البنية الأساسية.