[LTP] [PATCH v2 1/3] Hugetlb: Migrating libhugetlbfs brk_near_huge

Richard Palethorpe rpalethorpe@suse.de
Thu Oct 27 11:21:12 CEST 2022


Hello,

Tarun Sahu <tsahu@linux.ibm.com> writes:

>
>> 
>> > +	snprintf(hfile, sizeof(hfile), "%s/ltp_hugetlbfile%d", Hopt,
>> > getpid());
>> > +	hpage_size = SAFE_READ_MEMINFO("Hugepagesize:")*1024;
>> > +
>> > +	fd = SAFE_OPEN(hfile, O_RDWR | O_CREAT, 0600);
>> > +	SAFE_UNLINK(hfile);
>> 
>> I'm guessing opening this file and using it with mmap is a very
>> common
>> pattern. If so, it should be encapsulated in tst_hugepage.c.
>> 
> Yeah I agree. But the change in tst_hugepage.c will require change in
> prexisting hugetlb tests.

You don't need to update existing LTP tests if you add a new flag to
.tst_test I guess.

>
>> > +}
>> > +
>> > +static void cleanup(void)
>> > +{
>> > +	if (fd >= 0)
>> > +		SAFE_CLOSE(fd);
>> > +	SAFE_UMOUNT(Hopt);
>> > +}
>> > +
>> > +static struct tst_test test = {
>> > +	.needs_root = 1,
>> > +	.needs_tmpdir = 1,
>> > +	.options = (struct tst_option[]) {
>> > +		{"H:", &Hopt,   "Location of hugetlbfs, i.e.  -H
>> > /var/hugetlbfs"},
>> 
>> This is a source of confusion. This description suggests we pass in
>> an
>> existing hugetlb mount. However it's actually where it will be
>> mounted.
>> 
>> Perhaps instead we could use set/getmntent to find an existing
>> hugetlb
>> mount?  Then if it is not there, try mounting it. This is what we do
>> for
>> CGroups.
>> 
>> I'm not sure what difference it makes where the FS is mounted
>> anyway. Why is it even an option?
>
> Not sure, If user is ok for using premounted fs without their
> permission. So instead of searching, it will mount where user will
> explicitly asked for. Or otherwise if not provided, it will mount at
> temp location under /tmp.

Does it actually create a new FS or is it just remounting the existing
hugetlb interface in a new place?

Also it requires privileges to mount an FS. It seems unlikely that some
database wanting to use hugepages would mount it themselves.

>From the kernel docs:

"If the user applications are going to request huge pages using mmap system
call, then it is required that system administrator mount a file system of
type hugetlbfs"

>
> I had taken this option from hugemmap01 test. Thinking, it might be
> to provide user the flexibility incase user doesnt want test to mount
> fs at random location by default.
>
> I will change the description to "Provide the location to mount the
> hugetlbfs or default '/tmp/xxxxxxx'"
>
>> 
>> > +		{"s:", &nr_opt, "Set the number of the been allocated
>> > hugepages"},
>> > +		{}
>> > +	},
>> > +	.setup = setup,
>> > +	.cleanup = cleanup,
>> > +	.test_all = run_test,
>> > +	.hugepages = {1, TST_NEEDS},
>> 
>> When we set this tst_hugepages.c could fill Hopt (which should be
>> something like tst_hugepages_mount) with the location of the mount
>> point. It could also open the hfile fd and store it in a static
>> variable like tst_hugepage_fd.
> Yeah, It will move the repeated actions to single location.
>
> This will
> require change in lib/tst_hugepage.c and which will require
> change in already existing test under hugetlb/ . Which will be like a
> new separate change patch series.

If it results in too many complicated changes, then converting all the
existing tests could be defered to a later time by creating new
variables.

-- 
Thank you,
Richard.


More information about the ltp mailing list