LINUX.ORG.RU

Своп отключен в ядре

 , ,


1

1

Доброго дня

Изложу проблему. Есть древняя машина x86 на ней установлен Gentoo 2.6 это embeded система необходимая для работы всего одной программы. При этом ОЗУ на борту всего 128 МБ и на данный момент архиважно увеличить это значение. Таких древних карт памяти уже не найти и увеличить объём памяти новой планкой нереально. Но есть FlashCompact на 16 GB со скоростью чтения 50 MB/S. Захотелось странного, увеличить размер ОЗУ за счёт свопа. Выделил ГБ на отдельном разделе проинициализировал а подключить его не могу, при swapon /dev/hdc3 пишет Function not implemented. В интернетах пишут что это значит что своп отключен в ядре на этапе компиляции, опция CONFIG_SWAP. Вот чего меньше всего хочется так это компилировать кастомное ядро с неизвестными мне параметрами.

Вопрос: можно ли включить функцию ядра работы со свопом без перекомпиляции ядра? (установка окружения / подключение модулей и тд.)


Вот чего меньше всего хочется так это компилировать кастомное ядро с неизвестными мне параметрами

Так у тебя текущий конфиг кернела есть? Измени одну строчку и пересобери. Делов-то...

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от ass

Точно есть. Так параметры в этом архиве значит? Теперь осталось найти исходники этого древнего ядра..

Dev0
() автор топика

Могу быть не прав, но swap не замена ОЗУ. Я к тому, что прироста в производительности ты скорее всего не увидишь.

UVV ★★★★★
()
Последнее исправление: UVV (всего исправлений: 1)
Ответ на: комментарий от UVV

Могу быть не прав, но swap не замена ОЗУ

В данном случае скорость обмена не критична. Главное объём. Из за нехватки памяти прога зависает.

Dev0
() автор топика

кастомное ядро с неизвестными мне параметрами

в:

  • /boot/
  • /usr/src/linux/.config

конфига нет?

Если IKCONFIG был включен вообще или как модуль, то пробуй

modprobe configs
и смотри его в:
/proc/config.gz

Bruce_Lee ★★
()
Ответ на: комментарий от Dev0

Так параметры в этом архиве значит?

сжатый конфиг ядра, распаковать так:

zcat /proc/config.gz > config

Теперь осталось найти исходники этого древнего ядра..

2.6 вообще не проблема, доступны с 1.0: https://www.kernel.org/pub/linux/kernel/

Bruce_Lee ★★
()
Ответ на: комментарий от Bruce_Lee

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

Dev0
() автор топика
Ответ на: комментарий от Dev0

но чтоб его найти надо загрузиться именно на той машине

открыть диск этой машины не вариант? Если это была не суперкастомная сборка генты от умалишенного, то и в /boot/ этот конфиг должен быть.

Bruce_Lee ★★
()
Ответ на: комментарий от UVV

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

Dev0
() автор топика
Ответ на: комментарий от Bruce_Lee

У меня образ на флешке и Юбунта в WMWare. Вижу разделы/папки/файлы а именно этот архив не могу найти хотя точно помню что видел его. И если это чтото значит папка /proc пуста.

Dev0
() автор топика
Ответ на: комментарий от UVV

Проще врядли объясню. Прога проверяет доступный объём RAM и если он недостаточен выполняет/невыполняет какие-то действия.

Dev0
() автор топика
Ответ на: комментарий от metawishmaster

mount: proc уже примонтирован

Так его отдельно надо монтировать? у меня же весь раздел подключен /media/usb0

Dev0
() автор топика
Ответ на: комментарий от timdorohin

Не загрузится. Эта система требует наличия спецустройств в компе которых у меня сейчас нет.

Dev0
() автор топика
Ответ на: комментарий от O02eg

Kernel panic как можно продолжить загрузку?)

Dev0
() автор топика
Ответ на: комментарий от metawishmaster

На запущенной системе это всё есть. Я правда не знал что эти каталоги заполняются при загрузке. Доберусь до той машины загружу и скопирую config.gz

пока так https://yadi.sk/i/7CupTDQm3MCgkU

Dev0
() автор топика
Ответ на: комментарий от timdorohin

Реально не хотелось бы ядро трогать. Если по простому изменением настроек системы желаемого не добиться то может этот функционал (работы со свопом) можно подцепить отдельным модулем? Вот модуль скомпилировать мне наверно по силам прямо сейчас.

Dev0
() автор топика
Ответ на: комментарий от ymuv

Вопрос возможности а не целесообразности. Многие пишут что в линухе одна и та же задача может быть решена несколькими способами. В моём случае получается только 1 решение.

Dev0
() автор топика
Ответ на: комментарий от Dev0

Я про то, что если програма проверяет обьем ОЗУ, то ей все равно сколько свапу стоит. Если она проверяет обем ОЗУ+свап, тогда это сработает.

ymuv ★★★★
()
Ответ на: комментарий от ymuv

возможно, но если проверка ограничивается на нулевой указатель от malloc я думаю поможет. и по идее для проги предоставлено единое адресное пространство не важно где оно размещено физически.

Dev0
() автор топика
Ответ на: комментарий от Dev0

проверка ограничивается на нулевой указатель от malloc

Если включен оверкоммит и выделяемая через malloc память как-то используется, то oom-killer скорее всего прибьет процесс раньше, чем malloc начнет возвращать 0

annulen ★★★★★
()
Ответ на: комментарий от timdorohin

Без оверкоммита в эмбеддед никуда, если это конечно не про микроконтроллеры

annulen ★★★★★
()
Ответ на: комментарий от annulen

Я это высказывание привёл в пример тому что OOM Killer не панацея и зависания из за нехватки памяти действительно реальны в ЛЮБОЙ программе.

Про нулевой указатель и реакцию проги на него.. из области догадок и предположений. На деле зависания могла вызвать любая блокирующая/синхронная функция.

Забыл сказать, изначально там был флеш-диск 512 МБ под рабочий раздел выделено 112 МБ и забит на 95%. Диск заменил, рабочий раздел теперь 4 ГБ, памяти бы ещё накинуть бонусом и быть точно уверенным что её хватит под любую задачу ещё лет на 10 вперёд.

Dev0
() автор топика

вообще странная идея на флэшке делать своп. тем более смысла нет от такого большого размера флэшки для свопа при таком объеме оперативной памяти.

xmikex ★★★★
()
Ответ на: комментарий от xmikex

идея заменить HDD на CompactFlash принадлежит не мне а разработчикам оборудования) и впринципе логика ясна, CF работает быстрее HDD.

Dev0
() автор топика
Ответ на: комментарий от timdorohin

пробовал сделать всё по пунктам в результате скрипт extract-ikconfig выдал файлик в котором было написано что ядро не содержит конфигурационной информации.

Dev0
() автор топика
Ответ на: комментарий от Bruce_Lee

Добрался до машины загрузился теперь есть точные цифры

про систему и железо Linux 2.6.12.5-r3786 Gentoo Base System version 1.6.13 i686 Celeron (Coppermine) GenuineIntel GNU/Linux 600 MHz

про память /proc/sys/vm max_map_count =65536 min_free_kbytes =1442 overcommit_memory =0 ; по-умолчанию, значит выделяет больше физически существуемой overcommit_ratio =50 swappiness =60 vfs_cache_pressure =100

config.gz https://yadi.sk/d/q6iHThVW3MDTxv

Dev0
() автор топика
Ответ на: комментарий от Dev0

Ну конфиг выдрал, версию ядра знаешь, вперед, собирать.

При сборке в menuconfig выставишь Support for paging of anonymous memory и после сборки все будет работать.

timdorohin ★★★★
()
Ответ на: комментарий от Dev0

Так может и ядро с патчами и исходниками уже есть в /usr/src/linux? Оно установлено пакетом? (gentoo-sources или какой другой sys-kernel/*)

Bruce_Lee ★★
()

Что ж это за гентушник, который боится собирать ядро? В генту сборка своего ядра - обязательная процедура.

anonymous
()
Ответ на: комментарий от UVV

Могу быть не прав, но swap не замена ОЗУ. Я к тому, что прироста в производительности ты скорее всего не увидишь.

Ненужное в своп → памяти больше → размеры кешей и буферов больше → скорость выше → профит! :)

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

У него там одна программа работает, так что не тот случай.

UVV ★★★★★
()
Ответ на: комментарий от anonymous

так не моё оно мнеб сделать да забыть как страшный сон))

Dev0
() автор топика
Ответ на: комментарий от Bruce_Lee

/usr/src/linux - src нету есть !src 21 байт не открывается gentoo-sources - только /usr/lib/gentoolkit/pym .. там модули .pyc папка интересная /lib/modules/2.6.12.5-r3786/.. есть !build и !source по 36 байт не открываются. остальные файлы *.alias *.dep *.inputmap *.usbmap и папка /kernel с модулями *.ko везде только бинари кароч.

Dev0
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.