Vou tentar descrever o assunto o máximo que puder. No entanto, não poderei publicar todo o código relevante. Além disso, eu ainda não sou um especialista em Linux Kernel, então por favor, tenha paciência comigo.
O caso é o seguinte, Fiz algumas alterações no código, todas elas no espaço do usuário. Eu não mudei nada no código do kernel.
Depois de compilar e trabalhar por um tempo com essa versão, repentinamente percebi que o intervalo Portas efêmeras foi alterado.
Após investigar, descobri que isso foi causado por causa de uma alteração na ordem de magnitude (na alocação de memória). Mas como eu disse antes, ninguém tocou neste código.
Aqui estão algumas das mensagens de log da inicialização do Linux antes e depois dessa alteração. Você pode notar essa mudança na ordem que mencionei antes.
Após a alteração:
[000000.000] Determined physical RAM map:
[000000.000] memory: 0000000007000000 @ 0000000000c10000 (usable)
[000000.015] reserve bootmem for memoops 0000000000020000 @ 0000000007bf0000
[000000.019] Primary instruction cache 32kB, virtually tagged, 4 way, 64 sets, linesize 128 bytes.
[000000.019] Primary data cache 16kB, 64-way, 2 sets, linesize 128 bytes.
[000000.020] PID hash table entries: 512 (order: 9, 16384 bytes)
[000000.020] Using 500.000 MHz high precision timer.
[000000.227] Dentry cache hash table entries: 16384 (order: 5, 131072 bytes)
[000000.240] Inode-cache hash table entries: 8192 (order: 4, 65536 bytes)
[000000.266] Memory: 112408k/114688k available (2062k kernel code, 2136k reserved, 533k data, 200k init, 0k highmem)
Antes da alteração:
[000000.000] Determined physical RAM map:
[000000.000] memory: 0000000007400000 @ 0000000000c00000 (usable)
[000000.016] reserve bootmem for memoops 0000000000020000 @ 0000000007fe0000
[000000.020] Primary instruction cache 32kB, virtually tagged, 4 way, 64 sets, linesize 128 bytes.
[000000.020] Primary data cache 16kB, 64-way, 2 sets, linesize 128 bytes.
[000000.020] PID hash table entries: 1024 (order: 10, 32768 bytes)
[000000.228] Dentry cache hash table entries: 32768 (order: 6, 262144 bytes)
[000000.242] Inode-cache hash table entries: 16384 (order: 5, 131072 bytes)
[000000.269] Memory: 116280k/118784k available (2062k kernel code, 2344k reserved, 533k data, 200k init, 0k highmem)
Observação: já tentei retirar minhas alterações e recompilá-las, mas o problema ainda está lá por algum motivo.
Talvez alguém saiba o que pode afetar isso? Como isso pode acontecer?
Obrigado.
Tags kernel memory linux linux-kernel