17/01/2022 09:14, Dmitry Kozlyuk:
> Linux EAL ensured that mapped hugepages are clean
> by always mapping from newly created files:
> existing hugepage backing files were always removed.
> In this case, the kernel clears the page to prevent data leaks,
> because the mapped memory may contain leftover data
> from the previous process that was using this memory.
> Clearing takes the bulk of the time spent in mmap(2),
> increasing EAL initialization time.
> 
> Introduce a mode to keep existing files and reuse them
> in order to speed up initial memory allocation in EAL.
> Hugepages mapped from such files may contain data
> left by the previous process that used this memory,
> so RTE_MEMSEG_FLAG_DIRTY is set for their segments.
> If multiple hugepages are mapped from the same file:
> 1. When fallocate(2) is used, all memory mapped from this file
>    is considered dirty, because it is unknown
>    which parts of the file are holes.
> 2. When ftruncate(3) is used, memory mapped from this file
>    is considered dirty unless the file is extended
>    to create a new mapping, which implies clean memory.
[...]
>  struct hugepage_file_discipline {
>       /** Unlink files before mapping them to leave no trace in hugetlbfs. */
>       bool unlink_before_mapping;
> +     /** Reuse existing files, never delete or re-create them. */
> +     bool keep_existing;
>  };

That's a bit confusing to mix "unlink" and "keep".
I would prefer focusing on what is done, i.e. unlink when.
I like "unlink_before_mapping" because it is a real action.
The other action should be "unlink_existing" or "unlink_before_creating".


Reply via email to