2012-04-28 1 views
0

У нас был модуль ядра, который записывает в файл, и мы читаем файл proc, чтобы получить некоторую информацию об аппаратном обеспечении. Данные статистики аппаратного обеспечения стали более 3072 байтов (PROC_BLOCK_SIZE); поэтому мы локально буферизируем данные, определяя глобальный буфер размером 4096 байт. Как только данные будут полностью прочитаны, мы переместим данные в буфер proc_read_kernel в локальный буфер. Это делается в соответствии с хаком (2), определенным вокруг строки № 165 в linux-2.6.28/proc/fs/generic.c. Мы не отправляем eof до тех пор, пока весь буфер не будет прочитан, поэтому read proc будет вызываться два раза для 3072 байт и следующий для 1024 байтов. Мы делаем memcpy для копирования данных в буфер чтения read. Чтение proc будет вызываться только по командной строке.Глобальный буфер 4096, определенный в модуле ядра, вызывающий проблемы с производительностью при получении с устройства хранения

Но вставка этого конкретного модуля после добавления глобального буфера делает некоторые различия в числах производительности, полученных с устройства хранения. Если мы не будем делать modprobe этого модуля ядра, мы увидим лучшие числа. Логически глобальный буфер будет находиться в области BSS, и поскольку команда не вызывается, поэтому memcpy также не будет вызываться. Мы не можем объяснить эту аномалию. Любые указатели будут очень полезны.

+3

Показать ваш код пожалуйста. –

ответ

3

Мое хрустальное шарик сегодня у очистителей, поэтому я боюсь, что не могу полностью предсказать, какой «взлом» вы сделали, и может ли это повлиять на что-то, а тем более где реальная проблема может быть ,

Это, я бы рекомендовал вам начать устранение возможных источников проблем. Удалите части своего модуля и загрузите его, и посмотрите, все ли вы видите ухудшение производительности. Убейте свой хак (получите свою статистику через персональное устройство или что-то еще!) И посмотрите, поможет ли это. Черт, загрузите манекен «привет мир!». модуль и посмотреть, что это делает. Как только вы сузили причину, немного вернитесь назад, и, возможно, кто-то сможет вам помочь - без кода, чтобы продолжать, и не знаю, какие изменения вы внесли, просто невозможно дать вам более конкретные ответы ,

 Смежные вопросы

  • Нет связанных вопросов^_^