المحتويات

المقدمة

المتطلبات الأساسية

المكونات المستخدمة

معلومات أساسية

ما هو Callsite؟

الاختلافات بين المكالمات ووحدات البايت المختلفة

أعراض المشكلات المتعلقة باستهلاك الذاكرة أو التسرب

سيناريوهات أستكشاف الأخطاء وإصلاحها

تعطل الجهاز بسبب نفاد الذاكرة

لم يتعطل الجهاز بعد ولكن توجد به تحذيرات حول إستخدام الذاكرة

تحديد CallSite

معالجة إستهلاك الذاكرة في الوحدات النمطية وقواعد البيانات والمراسلة

تصحيح أخطاء CallSite

المقالات والوثائق ذات الصلة

المقدمة

يوضح هذا المستند كيفية أستكشاف أخطاء الذاكرة وإصلاحها في الأجهزة المستندة إلى برنامج Cisco IOS® XE مثل الموجهات والمحولات لموقع تسجيل الدخول.

المتطلبات الأساسية

معرفة في إدارة الذاكرة في الأجهزة المستندة إلى برنامج Cisco IOS XE.

المكونات المستخدمة

لا يقتصر هذا المستند على إصدارات برامج ومكونات مادية معينة. وهو ينطبق على التوجيه والتحويل للأنظمة الأساسية المستندة إلى برنامج Cisco IOS XE.

تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك قيد التشغيل، فتأكد من فهمك للتأثير المحتمل لأي أمر.

معلومات أساسية

مراقبة إستخدام ذاكرة الإنتاج الخاصة بالجهاز لزيادة الدلتا وتأكيد ما إذا كان المتوقع يستغرق وقتا. يشرح هذا المستند ما هو موقع الاستدعاء وكيف يساعد على أستكشاف أخطاء الذاكرة وإصلاحها بسرعة.

ملاحظة: يركز هذا المستند بشكل رئيسي على أستكشاف أخطاء إستخدام ذاكرة الوصول العشوائي الديناميكي (DRAM) لمعالج التوجيه.

ما هو Callsite؟

CallSite عبارة عن علامة يتم إستخدامها من قبل مركز المساعدة التقنية (TAC) من Cisco للتحقق من وظائف كود المصدر التي يتم استدعاؤها وتعقبها أثناء عمليات تخصيص الذاكرة التي يتم إجراؤها بواسطة العمليات ذات الصلة ب Cisco IOS-XE.

يمكن للعملاء توفير هذه العلامة قبل فتح حالة مركز المساعدة الفنية للحصول على دقة أسرع كما يمكن للعملاء المساعدة في تصحيح الأخطاء بواسطة الأوامر المقدمة لاحقا في هذه المقالة.

الاختلافات بين المكالمات ووحدات البايت المختلفة

تراقب مكالمات Diff التفاوت بين عدد مكالمات تخصيص الذاكرة والتوزيع. في العادة، قد تشير كمية كبيرة من مكالمات diff إلى وجود مشكلة متعلقة بالذاكرة. يحدث هذا عند وجود كميات كبيرة للغاية من البيانات، مما يشير إلى أن النظام لا يطلق الذاكرة وأن المخصصات تتراكم.

ويمكن مشاهدة كلا المكالمات المختلفة ووحدات بايت diff مع محاسبة النظام الأساسي لذاكرة العمليات من CommandShow:

test1#show processes memory platform accounting

Hourly Stats

process                   callsite_ID(bytes)          max_diff_bytes    callsite_ID(calls)   max_diff_calls  tracekey                                  timestamp(UTC)

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

sessmgrd_rp_0               F8E78C86E08C8003                 1579683      E6A19D3ED0064000            12269  1#90e06c15b54d23761b2b3b480e5fd704        2025-05-28 05:30

cli_agent_rp_0              A5E99693AA3B8004                 1268440      5D11C89CA87A8003             3197  1#3afb1165961ee7daf4af986e47f2f32c        2025-05-28 05:40

smand_rp_0                  3DFF8F3C424F400A                  918144      C34A609190E3C001              420  1#51a1581a8ac23e847e66fe8f268c66d1        2025-05-29 06:31

للنظام حدود داخلية لاستخدام الذاكرة تقوم بتشغيل تحذيرات الذاكرة وحروف syslog للمستوى الحرج. يمكن عرض النسبة المئوية لاستخدام الذاكرة التي تستند إلى هذه الحدود باستخدام الأمر show platform resources.

test1#show platform resources

**State Acronym: H - Healthy, W - Warning, C - Critical

Resource                 Usage                 Max             Warning         Critical        State

----------------------------------------------------------------------------------------------------

RP0 (ok, active)                                                                               H

Control Processor       1.17%                 100%            80%             90%             H

DRAM                   2639MB(34%)           7753MB          88%             93%             H

bootflash              856MB(13%)            6338MB          88%             93%             H

harddisk               0MB(0%)               0MB             88%             93%             H

ESP0(ok, active)                                                                               H

QFP                                                                                           H

TCAM                   10cells(0%)           131072cells     65%             85%             H

DRAM                   89761KB(2%)           3670016KB       85%             95%             H

IRAM                   13525KB(10%)          131072KB        85%             95%             H

CPU Utilization        1.00%                 100%            90%             95%             H

Crypto Utilization     3.00%                 100%            90%             95%             H

Pkt Buf Mem (0)        67KB(0%)              524288KB        85%             95%             H

test1#

ملاحظة: قم بإدخال حالة مركز المساعدة الفنية لتحديد ما إذا كانت إستدعاءات diff أو وحدات البايت مختلفة متعلقة بعملية معينة. بشكل عام، إذا كانت ذاكرة النظام الحرة منخفضة كما تظهر مع الأمر show تقوم بمعالجة منصة الذاكرة التي تم فرزها، فإن الأمر يستحق التدقيق أكثر.

أعراض المشكلات المتعلقة باستهلاك الذاكرة أو التسرب

عند وجود مشكلة في إستهلاك الذاكرة أو تسريب الذاكرة في جانب Cisco IOS XE، عادة ما يتم إنشاء تحذير أو تنبيه نقدي، على سبيل المثال:

Nov 22 11:37:16.770: %PLATFORM-4-ELEMENT_WARNING: R0/0: smand: RP/0: Used Memory value 89% exceeds warning level 88%. Top memory allocators are: Process: iomd_cc_0. Tracekey: 1#7eed26e49896115921b704a6d9780e72  Callsite ID: 4163698691 (diff_call: 395435). Process: iomd_cc_0. Tracekey: 1#7eed26e49896115921b704a6d9780e72  Callsite ID: 4163698691 (diff_call: 29). Process: btman_rp_0. Tracekey: 1#e7e4075661e7b1cbf867dc220f1b120c  Callsite ID: 407738370 (diff_call: 23).

يسلط هذا النوع من التنبيه الضوء على المعلومات القيمة كنقطة بداية لاستكشاف الأخطاء وإصلاحها:

- تاريخ ووقت تلقي التنبيه

- النسبة المئوية لاستخدام

- المكون متأثر

- أفضل عمليات Cisco IOS XE التي كشف النظام أنها من أفضل العملاء استنادا إلى الاستدعاءات المختلفة.

ملاحظة: ليس من الضروري أن يكون تنبيه ٪PLATFORM-4-ELEMENT_WARNING نقطة بيانات حاسمة للحصول على "تحليل السبب الجذري" (RCA) لأية مشكلة في إستهلاك الذاكرة.

ملاحظة: هناك أنواع أخرى من الأعراض وتنبيهات إستخدام الذاكرة المرتبطة بمكونات مختلفة مثل نظام الملفات المؤقتة (TMPFS) ومعالج تدفق الكم (QFP) والخوادم المساعدة Cisco IOS (IOSd)، ومع ذلك فهذه خارج نطاق هذا المستند.

ملاحظة: لا يغطي هذا المستند أستكشاف أخطاء SYS-2-MALLOCFAIL syslog وإصلاحها والتي تشير إلى مشكلة في الذاكرة تحت البرنامج الخفي Cisco IOS (IOS).

سيناريوهات أستكشاف الأخطاء وإصلاحها

تعطل الجهاز بسبب نفاد الذاكرة

عندما يتعطل الجهاز بسبب نفاد موارد الذاكرة، من المهم التحقق من السجلات الأخيرة قبل العطل لتأكيد رسالة syslog ٪PLATFORM-4-ELEMENT_WARNING ومعرفة ما إذا كانت: R0/0: سماند: ريبرنت/0: قيمة الذاكرة المستخدمة x٪ تتجاوز مستوى التحذير y٪ موجودة.

ملاحظة: لاحظ أنه يتم مسح syslogs من المخزن المؤقت DRAM المحلي بعد حدوث عطل بسبب نفاد الذاكرة، وبالتالي التحقق من سجلات الأرشيف من خادم syslog قبل أن يكون حدث التعطل ضروريا. إذا لم يتم إعداد خادم syslog بعد، فارجع إلى كيفية تكوين تسجيل الدخول إلى Cisco IOS.

ملاحظة: ٪PLATFORM-4-ELEMENT_WARNING: R0/0: سماند: ريبرنت/0: تتجاوز قيمة الذاكرة المستخدمة X٪ تنبيه مستوى التحذير Y٪ بعد ظهور حدث عطل أيضا في عمليات التتبع التي تم فك ترميزها من Cisco IOS. راجع تجميع سجلات التتبع وإدارتها باستخدام تحسين التسجيل الموحد للحصول على مزيد من المعلومات.

تعرض النظام لانهيار بسبب عدم كفاية الذاكرة. ونتيجة لذلك، يتم إنشاء تقرير نظام. هذا التقرير هو ملف .tar.gz يحتوي على بيانات ذات صلة يمكن إستخدامها للتحقيق في مشكلة الذاكرة. راجع أستكشاف الأخطاء وإصلاحها باستخدام تقارير النظام للحصول على مزيد من المعلومات.

عند فك الضغط، يحتوي تقرير النظام على دليل يسمى حالات العناكب داخل دليل TMP. أحوال العناوين هي مرفق خدمة يتم تنفيذه في التعليمات البرمجية التي تتتبع عمليات تخصيص الذاكرة والتخزين في مكالمات diff ووحدات البايت لمختلف عمليات Cisco IOS XE.

تحتوي لقطة إحصائيات مارون على تقرير النظام، مما يساعد على تحديد مصدر محتمل لتحديد إستهلاك الذاكرة أو حدوث مشكلة تسريب RCA أو تصحيح أخطائه بشكل أكبر وفهمه بشكل أفضل.

ملاحظة: لا يمكن فك ترميز دليل حالات العطل من تقرير النظام إلا بواسطة TAC لأنه يحتوي على وظائف داخلية وسرية للكود الذي يساعد مهندس TAC على فهم وظائف الرمز التي تقوم بتخصيص الذاكرة. يرجى تقديم حالة مركز المساعدة الفنية وتقديم تقرير النظام.

ملاحظة: تذكر أن تقرير النظام يوفر كمية كبيرة من البيانات لفهم تعطل الذاكرة بسبب نفاد الذاكرة، ومع ذلك ففي بعض الحالات يتطلب الأمر المزيد من تتبع الذاكرة ومراقبتها وتصحيح أخطائها واستكشاف أخطائها وإصلاحها.

لم يتعطل الجهاز بعد ولكن توجد به تحذيرات حول إستخدام الذاكرة

يعرض الأمر موارد النظام الأساسي، ويبدي التحذير وحدود إستخدام الذاكرة الحرجة.

ملاحظة: من أفضل الممارسات جمع أوامر الإخراج المتعلقة بالذاكرة لتصحيح الأخطاء بشكل أكبر بناء على مدى سرعة حدوث إستهلاك الذاكرة أو تسريبها، يمكن أن يكون الجهاز في خطر الأعطال نظرا لنفاد موارد الذاكرة.

ملاحظة: عند ملاحظة تحذيرات إستخدام الذاكرة، يمكنك تسجيل حالة مركز المساعدة الفنية وتوفير الأوامر show tech-support و

إظهار ذاكرة الدعم الفني التي تساعد مهندس TAC في فرز المشكلة بشكل مبدئي واحتمال العثور على ترخيص RCA بسرعة.

عندما لا يتعطل الجهاز بعد ويقوم بإنشاء تنبيهات الذاكرة في المخزن المؤقت syslog المحلي أو يتم استقبالها من خادم syslog من خلال أداة المراقبة، قم بتجميع إخراج show operations منصة الذاكرة الأساسية التي تم فرزها لتحديد وحدات البايت التي يتم إستهلاكها من العملية المخالفة إن وجدت.

Router#show processes memory platform sorted

System memory: 4027884K total, 2580612K used, 1447272K free,

Lowest: 1447272K

Pid    Text      Data   Stack   Dynamic       RSS     Total              Name

--------------------------------------------------------------------------------

21240  263436    858000     136       308    858000   3632460   linux_iosd-imag

27232   12877    195460     136     23592    195460   2231316     fman_fp_image

26797      90    157260     136     22308    157260   1741996        cpp_cp_svr

19194    7325    102756     136      2376    102756   1318608           fman_rp

27179   18745    242708     136       448    242708   1160248    qfp-ucode-utah

في هذا الإخراج، راجع عمود حجم المجموعة المقيم (RSS). هذا مؤشر على عدد كيلوبايت التي تستهلكها كل عملية Cisco IOS XE.

تحديد CallSite

بعد ذلك، قم بتجميع إخراج عملية محاسبة النظام الأساسي لذاكرة العمليات show التي تعرض إستدعاءات التوزيع وقيم وحدات البايت للعمليات المختلفة. عادة، نركز على القيم الأكبر.

تعد وحدات بايت الاستدعاء المختلفة مؤشرا جيدا لتحديد ما إذا كان يمكن حدوث تسريب محتمل للذاكرة، حيث أنها توضح كم وحدات البايت من الذاكرة التي لا تزال محتجزة بواسطة النظام بواسطة عملية دون إصدارها مرة أخرى إلى النظام.

استنادا إلى هذه البيانات، يمكنك تحديد أي علامة CallSite من العملية المخالفة التي تحتوي على أكبر عدد من المكالمات ذات الأبعاد المختلفة وقيم وحدات البايت.

تقوم عملية محاسبة النظام الأساسي لذاكرة العملية show بتعقب هذه المكالمات ووحدات البايت المختلفة عبر الوقت. في بعض الحالات، يتم تضمين تتبع خلفي في إخراج الأمر هذا. وهذا مهم لمهندس TAC حيث يتم فك ترميز هذا التتبع الخلفي باستخدام الأدوات الداخلية ويساعد على تحديد وظائف الرمز التي يمكن أن تتسبب في حدوث تسريب محتمل للذاكرة.

ملاحظة: غالبا ما يكون هناك حاجة إلى مزيد من تصحيح الأخطاء لعملية ما إذا كان الأمر show process memory platform accounting لا يوفر معلومات كافية لاستكشاف أخطاء تسريب الذاكرة وإصلاحها.

راجع أيضا تصحيح أخطاء CallSite من هذا المستند للحصول على أسلوب ثانوي لتحديد موقع الطلب.

معالجة إستهلاك الذاكرة في الوحدات النمطية وقواعد البيانات والمراسلة

يمكن أن تكون هناك حاجة لجمع هذه الأوامر لعملية Cisco IOS XE معينة لمزيد من تصحيح أخطاء تسريب ذاكرة عملية Cisco IOS XE:

# Allocations and frees per module

show platform software memory

show platform software memory

bri

# Database diff and entries statistics

show platform software memory database

| ex diff:0

show platform software memory database

bri | ex _0_

# Messaging diff and entries statistics

show platform software memory messaging

| ex diff:0

show platform software memory messaging

brief | ex _0_

تكمل مخرجات الأوامر هذه التحقيق في تسرب الذاكرة الناجم عن عملية ما، وغالبا ما تكون مطلوبة إذا لم توفر أوامر الفرز الأساسية الأولية المعلومات الكافية.

تصحيح أخطاء CallSite

توجد طريقة ثانوية لتحديد موقع الطلب هي تصحيح الأخطاء. هذه الأوامر مطلوبة:

debug platform software memory

alloc callsite start

show platform software memory

alloc callsite brief

debug platform software memory

alloc backtrace start

depth 10

show platform software memory

alloc backtrace

يتيح الأمر الأول تصحيح عمليات التخصيص لمواقع الاستدعاء الخاصة بعملية ما. في الإصدارات الأحدث، يتم تمكين هذا الأمر بشكل افتراضي ولا يؤثر على الخدمة.

يوفر الأمر show platform software memory <process> <location> alloc callSite brief جدولا يعرض مواقع الاستدعاءات الخاصة بتلك العملية واستدعاءات DIFF ووحدات البايت الخاصة بكل موقع اتصال. على سبيل المثال، نقدم هنا الإخراج لعملية Cisco IOS ولكن يمكن تجميعه لأي عملية أخرى:

test1# show platform software memory ios r0 alloc callsite brief

The current tracekey is   : 1#b1ba773f123f8d990fd84c82c1d0e1d3

callsite            thread    diff_byte               diff_call

----------------------------------------------------------------

3DFF8F3C424F4004    4115      57384                   1

ABB2D8F932038000    4115      57360                   1

3869885745FC8000    4115      16960                   1

DF884D58A8EF0004    4115      8208                    1

DF884D58A8EF0008    4115      8208                    1

FAE69298A17B8000    4115      4243                    165

FAE69298A17B8001    4115      2640                    165

FAE69298A17B8002    4115      1958                    12

ملاحظة: يجب تنفيذ الأمر show plat soft memory <process> <location> alloc callSite BRI عدة مرات مع مرور الوقت حتى يتم العثور على إستدعاء diff أو زيادة عمود bytes حيث سيكون ذلك مؤشرا على أن النظام يحتفظ بهذه الذاكرة دون إصدارها.

بمجرد أن يتم تحديد موقع الطلب الذي سيتم تسريبه، يجب تنفيذ الأمر debug platform software <process> <location> alloc backtrace start <callSite> depth 10 ل موقع الطلب هذا. يمكن ترك هذا الأمر في مكانه ولا يؤثر على الخدمة.

تنفيذ الأمر show plat soft memory <process> <location> alloc callSite bri مرة أخرى حتى يتم رؤية المكالمات/وحدات البايت المختلفة التي لا تزال مطلوبة بعد تمكين تصحيح أخطاء موقع الطلب المحدد، وذلك لتعقب وظائف التعليمات البرمجية التي تقوم بتخصيص الذاكرة لموقع الاستدعاء هذا. وفيما بعد، يمكن تجميع التتبع الخلفي باستخدام show platform software memory <process> <location> alloc backtrace، على سبيل المثال:

show platform software memory install-manager switch active R0 alloc back

backtrace: 1#83e58872a4792de086bf7191551098d7  maroon:7FCBACB87000+4642 maroon:7FCBACB87000+579C repm_core:7FCBB1F29000+1E146 avl:7FCBB4005000+2989 repm_core:7FCBB1F29000+1DAF6 repm_core:7FCBB1F29000+1BADF repm_core:7FCBB1F29000+37BA6 repm_core:7FCBB1F29000+2A341 tdldb_assist_no_dbdm:7FCBB5EDE000+416E

callsite: 7BD5593C00E30000, thread_id: 15556

allocs: 70, frees: 0, call_diff: 70

ملاحظة: توفير هذا الإخراج إلى TAC لفك تشفير المسار الخلفي، ثم يمكن لمهندس TAC التحقق من السلوك في الرمز، وتحديد ما إذا كان هناك عيب موجود أو فهم السلوك بشكل أفضل. إذا لزم الأمر، يمكن أن تصل TAC إلى فريق المطورين.

ملاحظة: تأكد من تحديث البرامج. في حالة العثور على عيب برمجية جديد، يمكن أن يعمل TAC مع فريق المطور لمزيد من تصحيح الأخطاء والتحقيق في الشرط.

المقالات والوثائق ذات الصلة

- دليل أستكشاف أخطاء ذاكرة الموجه ASR 1000 Series وإصلاحها

- فحص إستخدام ذاكرة IOS-XE

- الإبلاغ عن مشكلات إستخدام الذاكرة من خلال IM

- دليل أستكشاف أخطاء الذاكرة وإصلاحها ل ISRs السلسلة Cisco 4000 Series