selftests: net: tcp_mmap: Use huge pages in receive path

One down side of using TCP rx zerocopy is one extra TLB miss
per page after the mapping operation.

While if the application is using hugepages, the non zerocopy
recvmsg() will not have to pay these TLB costs.

This patch allows server side to use huge pages for
the non zero copy case, to allow fair comparisons when
both solutions use optimal conditions.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Arjun Roy <arjunroy@google.com>
Cc: Soheil Hassas Yeganeh <soheil@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Eric Dumazet 2020-08-20 10:11:18 -07:00 committed by David S. Miller
parent 72653ae530
commit 59c0d31988
1 changed files with 5 additions and 4 deletions

View File

@ -157,6 +157,7 @@ void *child_thread(void *arg)
void *addr = NULL;
double throughput;
struct rusage ru;
size_t buffer_sz;
int lu, fd;
fd = (int)(unsigned long)arg;
@ -164,9 +165,9 @@ void *child_thread(void *arg)
gettimeofday(&t0, NULL);
fcntl(fd, F_SETFL, O_NDELAY);
buffer = malloc(chunk_size);
if (!buffer) {
perror("malloc");
buffer = mmap_large_buffer(chunk_size, &buffer_sz);
if (buffer == (void *)-1) {
perror("mmap");
goto error;
}
if (zflg) {
@ -256,7 +257,7 @@ end:
ru.ru_nvcsw);
}
error:
free(buffer);
munmap(buffer, buffer_sz);
close(fd);
if (zflg)
munmap(raddr, chunk_size + map_align);