e308018bbe
Now that we install the binary in /bin, and we have a link from /usr/bin, change the path in the test itself as well. Otherwise it works with bash but not with dash for some reason. Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
187 lines
4.1 KiB
Text
187 lines
4.1 KiB
Text
# 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 /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 /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
|