diff options
Diffstat (limited to 'test/memory')
-rw-r--r-- | test/memory/passt | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/test/memory/passt b/test/memory/passt new file mode 100644 index 0000000..fa89821 --- /dev/null +++ b/test/memory/passt @@ -0,0 +1,187 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +# +# PASST - Plug A Simple Socket Transport +# for qemu/UNIX domain socket mode +# +# PASTA - Pack A Subtle Tap Abstraction +# for network namespace/tap device mode +# +# test/memory/passt - Show memory usage of passt in kernel and userspace +# +# Copyright (c) 2022 Red Hat GmbH +# Author: Stefano Brivio <sbrivio@redhat.com> + +gtools sed cat diff nm sort kill tee head tail chroot unshare mount mkdir cp + +def meminfo_row +gout DIFF meminfo_diff /tmp/meminfo.before /tmp/meminfo.after __WHAT__ +tl __NAME__ +td __DIFF__ 3 0 0 +endef + +def meminfo_reverse_row +gout DIFF meminfo_diff /tmp/meminfo.after /tmp/meminfo.before __WHAT__ +tl __NAME__ +td __DIFF__ 3 0 0 +endef + +def nm_row +gout SIZE nm_size /tmp/nm.size __WHAT__ +tl __WHAT__ +td __SIZE__ 6 0 0 +endef + +def slab_row +gout COUNT slab_diff_count /tmp/slabinfo.before /tmp/slabinfo.after __WHAT__ +gout SIZE slab_size /tmp/slabinfo.before __WHAT__ +gout DIFF slab_diff_size /tmp/slabinfo.before /tmp/slabinfo.after __WHAT__ +tl __WHAT__ +td __COUNT__ 0 0 0 +td __SIZE__ 0 0 0 +td __DIFF__ 6 0 0 +endef + +def start_stop_diff +guest sed /proc/slabinfo -ne 's/^\([^ ]* *[^ ]* *[^ ]* *[^ ]*\).*/\\\1/p' > /tmp/slabinfo.before +guest cat /proc/meminfo > /tmp/meminfo.before +guest /usr/bin/passt.avx2 -l /tmp/log -s /tmp/sock -P /tmp/pid __OPTS__ --netns-only +sleep 2 +guest cat /proc/meminfo > /tmp/meminfo.after +guest sed /proc/slabinfo -ne 's/^\([^ ]* *[^ ]* *[^ ]* *[^ ]*\).*/\\\1/p' > /tmp/slabinfo.after +guest kill \$(cat /tmp/pid) +guest diff -y --suppress-common-lines /tmp/meminfo.before /tmp/meminfo.after || : +guest nm -td -Sr --size-sort -P /usr/bin/passt.avx2 | head -30 | tee /tmp/nm.size +guest sed /proc/slabinfo -ne 's/\(.*<objsize>\).*$/\1/p' | tail -1; (diff -y --suppress-common-lines /tmp/slabinfo.before /tmp/slabinfo.after | sort -grk8) +endef + +def summary +info Memory usage summary +info +th type MiB +set WHAT MemFree +set NAME used +meminfo_reverse_row +set WHAT AnonPages +set NAME userspace +meminfo_row +set WHAT Slab +set NAME kernel +meminfo_row +te +endef + + +guest mkdir /test +guest mount -t tmpfs none /test +guest mkdir /test/proc /test/dev /test/tmp +guest mount -o bind /proc /test/proc +guest mount -o bind /dev /test/dev +guest cp -Lr /bin /lib /lib64 /usr /sbin /test/ + +guest ulimit -Hn 300000 +guest unshare -rUm -R /test +guest chroot . + +guest meminfo_size() { grep "^$2:" $1 | tr -s ' ' | cut -f2 -d ' '; } +guest meminfo_diff() { echo $(( $(meminfo_size $2 $3) - $(meminfo_size $1 $3) )); } + +guest nm_size() { grep -m1 "^$2 " $1 | cut -f4 -d ' '; } + +guest slab_count() { grep "^$2 " $1 | tr -s ' ' | cut -f3 -d ' '; } +guest slab_size() { grep "^$2 " $1 | tr -s ' ' | cut -f4 -d ' '; } +guest slab_diff_count() { echo $(( $(slab_count $2 $3) - $(slab_count $1 $3) )); } +guest slab_diff_size() { echo $(( $(slab_count $2 $3) * $(slab_size $2 $3) - $(slab_count $1 $3) * $(slab_size $1 $3) )); } + + +test Memory usage: all TCP and UDP ports forwarded, IPv4 and IPv6 +set OPTS -t all -u all +start_stop_diff +summary + +info Userspace memory detail +info +th symbol MiB +set WHAT tcp_buf_discard +nm_row +set WHAT tcp6_l2_buf +nm_row +set WHAT tcp4_l2_buf +nm_row +set WHAT tc +nm_row +set WHAT pkt_buf +nm_row +set WHAT udp_splice_map +nm_row +set WHAT udp6_l2_buf +nm_row +set WHAT udp4_l2_buf +nm_row +set WHAT udp_tap_map +nm_row +set WHAT icmp_id_map +nm_row +set WHAT udp_splice_buf +nm_row +set WHAT tc_hash +nm_row +set WHAT pool_tap6_storage +nm_row +set WHAT pool_tap4_storage +nm_row +set WHAT tap6_l4 +nm_row +set WHAT tap4_l4 +nm_row +te + +info Kernel memory detail +info +th objects count size MiB +set WHAT pid +slab_row +set WHAT dentry +slab_row +set WHAT Acpi-Parse +slab_row +set WHAT kmalloc-64 +slab_row +set WHAT kmalloc-32 +slab_row +set WHAT lsm_file_cache +slab_row +set WHAT filp +slab_row +set WHAT anon_vma_chain +slab_row +set WHAT ep_head +slab_row +set WHAT sock_inode_cache +slab_row +set WHAT signal_cache +slab_row +set WHAT TCPv6 +slab_row +set WHAT TCP +slab_row +set WHAT UDPv6 +slab_row +te + + +test Memory usage: all TCP ports forwarded, IPv4 +set OPTS -t all -4 +start_stop_diff +summary + + +test Memory usage: all TCP and UDP ports forwarded, IPv4 +set OPTS -t all -u all -4 +start_stop_diff +summary + + +test Memory usage: no ports forwarded +set OPTS -t none -u none +start_stop_diff +summary |