Какие изменения нужно внести в этот монолитный файл драйвера Kconfig Wifi, чтобы скомпилировать его как модуль? Прямо сейчас при использовании Cmake не создается файл Ko

What can make Linux so unresponsive?

Перераспределение доступной оперативной памяти, которое приводит к большому объему подкачки, определенно может привести к этому. Помните, что ввод-вывод с произвольным доступом на вашем механическом жестком диске требует перемещения головки чтения/записи,который может выполнять только около 100 поисков в секунду.

Linux обычно полностью уходит на обед, если вы выделяете ОЗУ «слишком много». У меня также есть вращающийся диск и 8 ГБ оперативной памяти. У меня были проблемы с парой программ с утечкой памяти. т.е. их использование памяти со временем растет и никогда не уменьшается, поэтому единственным способом контролировать это было бы остановить программное обеспечение, а затем перезапустить его. Основываясь на опыте, который у меня был во время этого, я не очень удивлен, узнав о задержках более десяти минут, если вы генерируете 3 ГБ+ подкачки.

Вы не обязательно увидите это во всех случаях, когда у вас более 3 ГБ подкачки. Теория говорит, что ключевым понятием является взбучка . С другой стороны, если вы пытаетесь переключиться между двумя разными рабочими наборами, и для этого требуется подкачка 3 ГБ входящих и исходящих данных, при скорости 100 МБ/с это займет не менее 60 секунд, даже если шаблон ввода-вывода можно идеально оптимизировать. На практике схема ввода/вывода будет далека от оптимальной.

После трудностей, которые у меня были с этим, я переформатировал свое пространство подкачки до 2 ГБ (в несколько раз меньше, чем раньше ), чтобы система не могла выполнять подкачку так глубоко. Вы можете сделать это, даже не изменяя размер раздела, потому что mkswapпринимает необязательный параметр размера.

Приблизительный баланс между нехваткой памяти и уничтожением процессов и зависанием системы так долго, что вы все равно сдаетесь и перезагружаетесь. Я не знаю, не слишком ли велик раздел подкачки размером 4 ГБ; это может зависеть от того, что вы делаете. Важно следить за тем, когда диск начинает взбалтывать, проверять использование памяти и реагировать соответствующим образом.

Проверка использования памяти многопроцессорными приложениями -затруднена. Чтобы увидеть использование памяти на -процесс без двойного подсчета -общей памяти, вы можете использовать sudo atop -R, нажать M и m и посмотреть в столбце PSIZE. Вы также можете использовать smem.smem -t -P firefoxпокажет PSS всех ваших процессов Firefox, а затем строку с общим PSS. Это правильный подход к измерению общего использования памяти в браузерах на основе Firefox или Chrome. (Хотя существуют также специальные функции браузера -для отображения использования памяти, которые будут отображать отдельные вкладки ).

-1
18.08.2021, 16:13
1 ответ

Предполагая, что версия вашего ядра 5.12 или выше, вы, очевидно, просматриваете файл в пакете исходного кода ядра Linux с путем <kernel source root>/drivers/net/wireless/mediatek/mt76/mt7921/Kconfig. Это файл, предоставляющий информацию процессу, который создает фактический файл конфигурации ядра. Изменение этого файла фактически не изменит конфигурацию ядра.

Текст «Чтобы скомпилировать этот драйвер как модуль, выберите M здесь» является справочным текстом для соответствующей опции меню конфигурации ядра :вы можете увидеть меню конфигурации ядра, запустив, например,. make menuconfigв папке <kernel source root>. Команда make menuconfigобработает все файлы Kconfigв различных частях дерева исходных каталогов ядра и использует данные для построения меню конфигурации ядра, которое она вам представит.

Файл конфигурации ядра находится по адресу <kernel source root>/.configсоответственно.

Чтобы скомпилировать этот драйвер как модуль, вы должны найти строку в <kernel source root>/.config, которая говорит либо:

# CONFIG_MT7921E is not set

или:

CONFIG_MT7921E=y

и измените эту строку на:

CONFIG_MT7921E=m

Если строки CONFIG_MT7921Eнет в файле .config, вы можете просто добавить ее.

Но я не понимаю, что вы имеете в виду под «при использовании Cmake файл.ko не создается». Обычно вы должны запускать make modules, make allили один из других целевых файлов Makefile, пока cdнаходится в вашем каталоге <kernel source root>.

(Существует команда с именем cmake, но это совершенно другой инструмент сборки, который не используется в процессе сборки ядра Linux. Обычно cmake— это просто «процессор до -», который создает настоящий Makefile, поэтому при создании приложения, использующего cmake, вы обычно сначала запускаете cmake, затем make, затем make install. Но это не относится к ядру Linux.)

1
20.08.2021, 10:25

Теги

Похожие вопросы