Por que o comando lsmod mostra muitos módulos com tamanho de 16384?

1

Eu corro o comando sudo lsmod no meu Ubuntu 16.04 LTS e recebo uma saída de uma seção que é mostrada abaixo.

Module                  Size  Used by
simple_lkm             16384  0
ufs                    73728  0
xt_CHECKSUM            16384  1
iptable_mangle         16384  1
ipt_MASQUERADE         16384  3
nf_nat_masquerade_ipv4    16384  1 ipt_MASQUERADE
iptable_nat            16384  1
nf_nat_ipv4            16384  1 iptable_nat
nf_nat                 24576  2 nf_nat_ipv4,nf_nat_masquerade_ipv4
nf_conntrack_ipv4      16384  2
nf_defrag_ipv4         16384  1 nf_conntrack_ipv4
xt_conntrack           16384  1
nf_conntrack           98304  5 nf_nat,nf_nat_ipv4,xt_conntrack,nf_nat_masquerade_ipv4,nf_conntrack_ipv4
ipt_REJECT             16384  2
nf_reject_ipv4         16384  1 ipt_REJECT
xt_tcpudp              16384  6
bridge                114688  0
stp                    16384  1 bridge
llc                    16384  2 stp,bridge
ebtable_filter         16384  0
ebtables               24576  1 ebtable_filter
ip6table_filter        16384  0
ip6_tables             20480  1 ip6table_filter
iptable_filter         16384  1
ip_tables              20480  3 iptable_filter,iptable_mangle,iptable_nat
x_tables               24576  11 ip6table_filter,xt_CHECKSUM,ip_tables,xt_tcpudp,ipt_MASQUERADE,xt_conntrack,iptable_filter,ebtables,ipt_REJECT,iptable_mangle,ip6_tables
drbg                   28672  1
ansi_cprng             16384  0
ctr                    16384  2
ccm                    20480  2
binfmt_misc            20480  1
gpio_ich               16384  0
dell_wmi               16384  0
sparse_keymap          16384  1 dell_wmi
dell_rbtn              16384  0
dell_laptop            24576  0
dcdbas                 16384  1 dell_laptop
dell_smm_hwmon         16384  0
nvidia              10375168  52
coretemp               16384  0
kvm_intel             167936  0
kvm                   483328  1 kvm_intel
snd_hda_codec_hdmi     49152  1
snd_hda_codec_idt      53248  1
irqbypass              16384  1 kvm
snd_hda_codec_generic    69632  1 snd_hda_codec_idt
snd_hda_intel          36864  3
snd_hda_codec         118784  4 snd_hda_codec_hdmi,snd_hda_codec_idt,snd_hda_codec_generic,snd_hda_intel
snd_hda_core           61440  5 snd_hda_codec_hdmi,snd_hda_codec_idt,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel
snd_hwdep              16384  1 snd_hda_codec
input_leds             16384  0
...

Agora, estou curioso para saber se há algum motivo específico pelo qual o tamanho de muitos módulos seja 16384 .

    
por user3405291 19.05.2017 / 18:02

1 resposta

5

Estes não são do tamanho de módulos, para obter o tamanho real desses módulos você pode executar algo como:

lsmod | grep 16384 | cut -f1 -d ' ' | xargs modinfo | grep filename |\
 grep -o '/.*' | xargs stat -c "%s - %n"

Quais saídas (em bytes):

...
19086 - '/lib/modules/4.4.0-78-generic/kernel/sound/core/seq/snd-seq-midi.ko'
21470 - '/lib/modules/4.4.0-78-generic/kernel/sound/core/snd-hwdep.ko'
15798 - '/lib/modules/4.4.0-78-generic/kernel/sound/core/seq/snd-seq-dev
...

O "16384" é o tamanho da memória usada por esse módulo em bytes, que é igual a "16KiB". E como eu sei que é apenas um número padrão e também o mínimo que pode ser usado, se você olhar com cuidado, você pode ver que não há módulo com o tamanho menor que 16384.

Acho que esse mínimo está relacionado a PTHREAD_STACK_MIN , run:

getconf PTHREAD_STACK_MIN

você receberá:

16384

Em aqui :

  

O atributo de tamanho da pilha determina o tamanho mínimo (em bytes) que será alocado para encadeamentos criados usando o atributo attr do objeto de encadeamento.

leia mais e mais .

    
por Ravexina 19.05.2017 / 19:21