On Thu, Jan 28, 2021 at 03:34:30PM -0800, Saravanan D wrote: > To help with debugging the sluggishness caused by TLB miss/reload, > we introduce monotonic hugepage [direct mapped] split event counts since > system state: SYSTEM_RUNNING to be displayed as part of > /proc/vmstat in x86 servers > > The lifetime split event information will be displayed at the bottom of > /proc/vmstat > .... > swap_ra 0 > swap_ra_hit 0 > direct_map_level2_splits 94 > direct_map_level3_splits 4 > nr_unstable 0 > .... > > One of the many lasting sources of direct hugepage splits is kernel > tracing (kprobes, tracepoints). > > Note that the kernel's code segment [512 MB] points to the same > physical addresses that have been already mapped in the kernel's > direct mapping range. > > Source : Documentation/x86/x86_64/mm.rst > > When we enable kernel tracing, the kernel has to modify > attributes/permissions > of the text segment hugepages that are direct mapped causing them to > split. > > Kernel's direct mapped hugepages do not coalesce back after split and > remain in place for the remainder of the lifetime. > > An instance of direct page splits when we turn on > dynamic kernel tracing > .... > cat /proc/vmstat | grep -i direct_map_level > direct_map_level2_splits 784 > direct_map_level3_splits 12 > bpftrace -e 'tracepoint:raw_syscalls:sys_enter { @ [pid, comm] = > count(); }' > cat /proc/vmstat | grep -i > direct_map_level > direct_map_level2_splits 789 > direct_map_level3_splits 12 > .... > > Signed-off-by: Saravanan D <saravanand@xxxxxx> Acked-by: Johannes Weiner <hannes@xxxxxxxxxxx>