Доброго времени суток.
Опять по работе встала задача в ограничении скорости работы памяти в Linux (SL 6.2 x86_64). В прошлый раз ограничение RAM-диска прошло успешно, но не удовлетворило всех потребностей.
Итак, необходимо вставить определенную задержку при _любом_ обращении к оперативной памяти. Реализация в виде модуля ядра.
Варианты, которые рассматриваются:
1) перехват библиотечных функций - узко и малоприменимо
2) перехват функций ядра для работы с памятью
3) перехват системных вызововПервый вариант был отметен сразу - не подходит.
Нужен совет в выборе из двух вариантов с возможными косяками на пути.
Также хотелось бы узнать, где найти полный список функций ядра для работы с памятью (kmalloc, vmalloc, kfree - для выделения, и, насколько я понял, обращение идет через open, read, write).
Работа с памятью (кстати сразу вопрос, о какой именно памяти мы говорим ;) лежит гораздо ниже каких либо системных вызовов. С памятью работает процессор, а точнее MMU. Ядро только управляет этим процессом устанавливая те или иные регистры, обеспечивает пейджинг страниц и т.д. Потом следует не забывать о наличие кешей L1 L2, наличии TLB...
>[оверквотинг удален]
> Реализация в виде модуля ядра.
> Варианты, которые рассматриваются:
> 1) перехват библиотечных функций - узко и малоприменимо
> 2) перехват функций ядра для работы с памятью
> 3) перехват системных вызовов
> Первый вариант был отметен сразу - не подходит.
> Нужен совет в выборе из двух вариантов с возможными косяками на пути.
> Также хотелось бы узнать, где найти полный список функций ядра для работы
> с памятью (kmalloc, vmalloc, kfree - для выделения, и, насколько я
> понял, обращение идет через open, read, write).
Для торможения прикладных программ можно запустить их в эмуляторе (виртуальной машине без ускорения). Пример эмулятора - bochs. Медленная работа с памятью (и всех других инструкций процессора) гарантирована, инструкции по работе с памятью можно дополнительно замедлить, "поковырявшись" в коде эмулятора.
Спасибо вам обоим за информацию. Теперь есть еще тонна вещей, над которыми стоит задуматься. и главная - а стоит ли оно того:) Эмулятор попробую.