Comment 23 for bug 1827258

Revision history for this message
Bin Yang (byangintel) wrote :

some new findings from database dump:
=================================
node_memtotal_mib platform_reserved_mib "vm_hugepages_possible_2M" "vm_hugepages_nr_2M_pending" "vm_hugepages_avail_2M" "vm_hugepages_nr_4K"
15428 8000 3202 \N 6795 0
15562 2000 6269 \N 7177 0
15643 8000 3309 \N 6799 0
15446 2000 6211 \N 7172 0

1. "vm_hugepages_possible_2M" < node_memtotal_mib
    It is reasonable. The hugepage possible size calculated in agent/node.py: inode_get_memory_hugepages() is correct

2. "vm_hugepages_avail_2M" > "vm_hugepages_possible_2M"
    It is not reasonable. something wrong in v1/host.py: _update_huge_pages()

3. "vm_hugepages_nr_4K" == 0
    _update_huge_pages()
            vm_hugepages_4K = \
                (m.node_memtotal_mib - m.platform_reserved_mib)
            vm_hugepages_4K -= \
                (vs_hugepages_nr * m.vswitch_hugepages_size_mib)
            vm_hugepages_4K -= \
                (constants.MIB_2M * vm_hugepages_nr_2M)
            vm_hugepages_4K -= \
                (constants.MIB_1G * vm_hugepages_nr_1G)
            vm_hugepages_4K = \
                (constants.NUM_4K_PER_MiB * vm_hugepages_4K)

            # Clip 4K pages
            min_4K = 32 * constants.Ki / 4
            if vm_hugepages_4K < min_4K:
                vm_hugepages_4K = 0

    node_memtotal_mib, vs hugepages, vm hugepages are calculated by gent/node.py: _inode_get_memory_hugepages().
    It should not simply set "vm_hugepages_4K = 0" if vm_hugepages_4K < min_4K. If requested hugepage size is too big, vm_hugepages_4K will be negative. It is the latest chance we can correct the wrong setting.

I will add more logs in v1/host.py and try to reproduce it.