Я разработал драйвер блочного устройства Linux для устройства CD. Драйвер работает хорошо, но теперь есть требование, чтобы он работал в системе SMP. Когда я провел пробный запуск в системе SMP, я обнаружил, что производительность драйвера снижается. Битрейт для DATA CD значительно снизился по сравнению с одноядерной системой. Итак, я понимаю, что мой драйвер нужно изменить, чтобы сделать его безопасным для SMP.
В моем драйвере я использовал: 1. Потоки ядра 2. Мьютекс 3. Семафор 4. Завершения
Моя система SMP: ARM Cortex-A9 Dual Core 600 МГц
Может ли кто-нибудь сказать мне, какие факторы я должен учитывать при переносе?
Documentation/lockstat.txt
, это может быть полезно. (Не предназначен как полный ответ о том, как написать достойный код ядра с поддержкой SMP, но может помочь вам определить неправильное использование блокировки..) - person sarnold   schedule 17.02.2012