Команды ARM64 заканчиваются за секунды.

Вопрос или проблема

Я использую плату ARM с Linux. Оборудование представляет собой плату управления доменами транспортного средства с 6-ядерным ARM Cortex-A78AE и некоторыми ядрами для машинного обучения. Я не хочу перезагружать его, потому что это может быть аппаратная или драйверная ошибка? которая может быть причиной моей проблемы со снижением производительности.

root@hobot:~# uname -a
Linux hobot 6.1.94-rt33 #1 SMP PREEMPT_RT Fri Nov  8 15:11:35 CST 2024 aarch64 GNU/Linux

Я не знаю, что случилось с моей ОС сегодня, я просто вдруг обнаружил, что команды оболочки выполняются слишком долго. но всего некоторое время назад все было в порядке.

например:
введите описание изображения здесь

Как вы видите, ls занимает около 5 секунд и использует 100% процессора на 4-м ядре.

Я попробовал strace с ls. Он застрял ни на чем.

введите описание изображения здесь

Что я должен мониторить, чтобы понять, что случилось?

Ответ или решение

Для решения проблемы, с которой вы столкнулись, необходимо сосредоточить внимание на диагностике системы, чтобы определить источник ошибки, приводящей к снижению производительности ARM64 команд на вашей платформе на основе Linux. Учитывая специфику вашей платформы с ARM Cortex-A78AE и ядрами, предназначенными для машинного обучения, проблема может быть связана как с программным обеспечением, так и с аппаратным обеспечением. Давайте систематически исследуем возможные причины и предложим решения.

Теория

Существует несколько возможных причин, почему команды в вашей системе выполняются медленно:

  1. Нагрузка на ЦПУ или блокировки: Если одна из задач потребляет все доступные ресурсы процессора или существующие межпроцессорные блокировки, это может повлиять на общую производительность системы.

  2. Проблемы с файловой системой: Состояние или тип файловой системы могут значительно влиять на времязатратность выполнения команд, особенно таких как ls.

  3. Модуль ядра или драйвер: Некорректные модули ядра или драйверы, такие как те, которые используют машинное обучение или аппаратные ускорители, могут вызывать неоправданно высокую нагрузку на ресурсы.

  4. I/O проблемы: Проблемы с вводом/выводом также могут привести к задержкам в выполнении команд. Это может включать в себя проблемы с подключенными устройствами или компонентами системы хранения данных.

  5. Необычные сетевые активности: Задержки могут быть вызваны сетевыми активностями, особенно если система выполняет сетевые операции, влияющие на выполнение других команд.

Пример

Как и в вашем случае, проблема может возникнуть внезапно, после того как система работала нормально. Это может указывать на обновления программного обеспечения, изменения конфигурации или новые аппаратные подключения, которые были осуществлены недавно. Анализ каждого из этих аспектов может помочь сузить круг поиска.

Применение

  1. Мониторинг Загрузки ЦПУ: Используйте top или htop для мониторинга, чтобы определить, какая программа или процесс занимает много процессорного времени. Особое внимание уделяйте подозрительным или нефиксированным процессам, которые могут вызвать такую нагрузку.

  2. Проверка Файловой системы: Используйте утилиты, такие как df и du, чтобы убедиться, что файловая система не заполнена и не содержит поврежденных данных. Также проверка типа файловой системы и возможное её дефрагментирование может улучшить производительность.

  3. Диагностика Модулей Ядра: Проверьте загруженные модули ядра с помощью lsmod и изучите журналы системы dmesg, чтобы обнаружить ошибки загрузки или сбои в драйверах.

  4. Анализ I/O Процессов: Используйте утилиту iotop, чтобы мониторить I/O процессы в реальном времени, и выявить, что вызывает высокий уровень ввода-вывода.

  5. Анализ Сетевых Соединений: Используйте netstat или ss для анализа сетевых соединений, чтобы выявить несанкционированные или подозрительные активности.

  6. STRACE для Более Глубокой Диагностики: Повторите strace анализ, но на этот раз расширьте его для более детального протоколирования и включите дополнительные опции трассировки системных вызовов.

  7. Сравните Историю журналов: Используйте journalctl для сравнения текущих и предыдущих журналах событий, выявляя изменения, которые могли привести к изменению поведения системы.

  8. Обновления и Патчи: Убедитесь, что все обновления для драйверов и ядра системы установлены. Возможно, ранее выпущенный патч системы устранит известные проблемы.

  9. Безопасный Режим: Запустить систему в безопасном режиме (если применимо) для диагностики и исключения слабых мест.

Если после проверки всех вышеуказанных пунктов проблема не решается, возможно, потребуется более глубокое изучение на уровне аппаратного обеспечения. Несмотря на ваше нежелание перезагружать систему, иногда это может решить неопределенные проблемы, особенно если они связаны с временными сбоями в драйверах или модулях ядра.

Проблемы такого рода могут быть сложными для диагностики, требуют терпения и систематического подхода, чтобы гарантировать, что ничего не упущено из виду в поиске источника проблемы и её последующего устранения.

Оцените материал
Добавить комментарий

Капча загружается...