á¨áĽááľ áááłáľ á ááľ áŠá áááľáľ
á áá°á¨áąáŁ á áááŹá˝áá˝ á¨áááá° á¨á ááłá¨ áá¨áĽ áááá¨áľ áĽáľá¨ 100áá´ ááá á¨á፠á áá áŤááĽáá¸áááŁáá
á áá áŤá áá ááá áĽáá°áá ááááŤáᢠá áááááśáš ááĽáŤááá˝ á¨100áá´ á áá ááŁá ááá˝ áá°áĄ áĽáá°áá˝á áá á ááᢠáááááą áŤáą áĽá áá á¨áááľáľ á¨áá áá áá
á¨áááťá ááᢠáá¨áĽáťáŁ ááá°á¨ááśá˝ á¨áááľáą ᨠMySQL áá ááá˝á á°áááá°ááᣠáĽá MySQL á ááá°á¨ááśá˝ á á áááᣠááá áá á¨á áŤáá áá°áá áŞáŤ áĽááł á ááťáᣠáááš 100 áá´ ááá á¨á፠á áá ááľáˇáá˘
ááá áĽááłá áĽáŞá ᨠKubernetes áá á˘ááá á˝áአá¨á°á¨á°á°á ᨠKubernetes node áá á˛ááá áĽáť áĽáá°áá áá˛áŤáá ááá˝ ááᢠá˝ááŠá áááŁááľ ááá ááááľ á áá°á ááľáĽ áá
áá° ááľááľ á¨ááŤááŤáá á°áá°ááľ ááľáĽ á ááľááá ááľáĽáľáĽááľá ááľáááľ
á°ááłáłáŠá ááłá á ááŁááľ á¨á˝ááŠá áľáŠá¨áľ áááĽá ἠáĽá á ááľááá ááľáĽáľáĽ áááŽá˝á áááľáááľ áĽááááááᢠááááŞáŤ áá á áŹááł áĽá á áŠá áááľáľ ááľ ááŤá¨á áŁáá áá°áľ ááľáĽ á áŁá áĽá ááĽá¨ áááŽá˝ áá áŠá˘ á¨á áá á¨á ááłá¨ áá¨áĽ á˝ááá áááá¨áľ, á ááłááśášá ááľáááľ áŤáľáááááłá.
á°áá áá (Vegeta) á áááľá°á ááľáĽ áŤá ááááá ááľááá ááááľ áá á¨TCP áááááľ áááĽáŤáᢠKubernetes á¨áá ááá áĽáá° á°á°áŤá˘ á ááłá¨áá¨áĽ áá (á ááŁáŠ á¨ááἠááá¨á á ááłá¨ áá¨áĽ áá)
áááá፠tcpdump
á Vegeta áá¨áŤ á TCP áĽá
áá¨áŁá ἠ(á SYN áĽá SYN-ACK ááŤá¨á) áááá¨áľ á áᢠáá
áá á ááľááá ááľáĽáľáĽááľ áááľáááľ, áá áá áá˝áá hping3
áááá âáááâ á¨SYN ááŹáśá˝ ááᢠá ááá˝ ááŹáľ ááľáĽ áááá¨áľ áŤá áĽáá¨áááŁáá áĽá áááááąá áĽáá°áá áŤáľáááŤáᢠá¨100áá´ á áá ááŹáá˝á áááŤá°áľ áááĄá ááŁáŤáľ áĽá á˝ááŠá áááŁááľ ááá áááᾠᨠVegeta's áá á¨á ááłá¨ áá¨áĽ ááĽááĽá 7 áá¨áŤ á¨á áá ááááľ áĽáá˝áááᢠá 30927ms ááá°áśá˝ á 10ms ááá°áśá˝ áá TCP SYN/SYN-ACKá á áá áá Kubernetes node "pings" áĽáá
á áá˘
theojulienne@shell ~ $ sudo hping3 172.16.47.27 -S -p 30927 -i u10000 | egrep --line-buffered 'rtt=[0-9]{3}.'
len=46 ip=172.16.47.27 ttl=59 DF id=0 sport=30927 flags=SA seq=1485 win=29200 rtt=127.1 ms
len=46 ip=172.16.47.27 ttl=59 DF id=0 sport=30927 flags=SA seq=1486 win=29200 rtt=117.0 ms
len=46 ip=172.16.47.27 ttl=59 DF id=0 sport=30927 flags=SA seq=1487 win=29200 rtt=106.2 ms
len=46 ip=172.16.47.27 ttl=59 DF id=0 sport=30927 flags=SA seq=1488 win=29200 rtt=104.1 ms
len=46 ip=172.16.47.27 ttl=59 DF id=0 sport=30927 flags=SA seq=5024 win=29200 rtt=109.2 ms
len=46 ip=172.16.47.27 ttl=59 DF id=0 sport=30927 flags=SA seq=5231 win=29200 rtt=109.2 ms
áá˛áŤáá á¨ááááŞáŤáá ááá¨áł ááľá¨á áá˝áá. á á á°á á°á¨á°á ááĽáŽá˝ áĽá áááá˝ á áááá, áĽááá á¨á ááľ áá áá¨ááá áĽááłááá ááá˝ áá. áááá¨áą áĽá áá áá¨ááťá áĽá á áá¨á¨áťá áá¨áááá.
á ááá á, áá¨ááá á ááá áá áľ áá á¨áľááš á áŤááľ ááłá°á áĽáá°áá˝á áááá áĽáááááá. ááááŁáľ áĽááá á NAT ááľáĽ áŤááľ á ááśáá˝ á¨ááá አᨠiptables á áá˝ ááľáĽ á ááłááśáš áá¸á? ááá á á ááłá¨ áá¨áĄ áá á á ááá áá ááżááŞáŤ áá á˝ááŽá˝ á á? áá áá ááá¨ááἠá ááą ááááľ á¨áľáááąá áĽáŤááłááąá á°á¨á á ááĽááľ ááá¨á ááᢠá¨á ááá áá áááá áĽáť á áá°á NAT áĽá áá¨ááá áááá áŤáľáááą áá áá¨á°áłáá˘
áĽáá° áĽáľá ááᣠáá˝á á á°ááłáłáŠ á ááłá¨ áá¨áĽ áá á¨áá ááááľ á¨á áá á°á°áŤá˘áá ááĽááĽá á ááĽáł ááááľ ááá áŤá°ááááá˘
theojulienne@kube-node-client ~ $ sudo hping3 10.125.20.64 -S -i u10000 | egrep --line-buffered 'rtt=[0-9]{3}.'
len=40 ip=10.125.20.64 ttl=64 DF id=0 sport=0 flags=RA seq=7346 win=0 rtt=127.3 ms
len=40 ip=10.125.20.64 ttl=64 DF id=0 sport=0 flags=RA seq=7347 win=0 rtt=117.3 ms
len=40 ip=10.125.20.64 ttl=64 DF id=0 sport=0 flags=RA seq=7348 win=0 rtt=107.2 ms
á áá¤áą áá°á¨áľ á˝áአá ááá áááŤá! áá iptables áĽá NAT á áŤáŤáľáľáᢠáľááá á˝áአTCP áá? áá°á á ICMP ááá áĽáá´áľ áĽáá°áááľ áĽáááá¨áľáĄ-
theojulienne@kube-node-client ~ $ sudo hping3 10.125.20.64 --icmp -i u10000 | egrep --line-buffered 'rtt=[0-9]{3}.'
len=28 ip=10.125.20.64 ttl=64 id=42594 icmp_seq=104 rtt=110.0 ms
len=28 ip=10.125.20.64 ttl=64 id=49448 icmp_seq=4022 rtt=141.3 ms
len=28 ip=10.125.20.64 ttl=64 id=49449 icmp_seq=4023 rtt=131.3 ms
len=28 ip=10.125.20.64 ttl=64 id=49450 icmp_seq=4024 rtt=121.2 ms
len=28 ip=10.125.20.64 ttl=64 id=49451 icmp_seq=4025 rtt=111.2 ms
len=28 ip=10.125.20.64 ttl=64 id=49452 icmp_seq=4026 rtt=101.1 ms
len=28 ip=10.125.20.64 ttl=64 id=50023 icmp_seq=4343 rtt=126.8 ms
len=28 ip=10.125.20.64 ttl=64 id=50024 icmp_seq=4344 rtt=116.8 ms
len=28 ip=10.125.20.64 ttl=64 id=50025 icmp_seq=4345 rtt=106.8 ms
len=28 ip=10.125.20.64 ttl=64 id=59727 icmp_seq=9836 rtt=106.1 ms
áá¤áśáš áĽáá°ááŤáłáŠáľ á˝áአá ááá¨á. ááááŁáľ áá á¨á ááá áá ááť áá? áá°ááá á¨á áá áĽáá ááááĄ-
ááá ááŹáśá˝ á áĽááá
áááľ á áľá°áááá˝ ááŤá¨á áááŤá?
theojulienne@kube-node-client ~ $ sudo hping3 172.16.47.27 --icmp -i u10000 | egrep --line-buffered 'rtt=[0-9]{3}.'
len=46 ip=172.16.47.27 ttl=61 id=41127 icmp_seq=12564 rtt=140.9 ms
len=46 ip=172.16.47.27 ttl=61 id=41128 icmp_seq=12565 rtt=130.9 ms
len=46 ip=172.16.47.27 ttl=61 id=41129 icmp_seq=12566 rtt=120.8 ms
len=46 ip=172.16.47.27 ttl=61 id=41130 icmp_seq=12567 rtt=110.8 ms
len=46 ip=172.16.47.27 ttl=61 id=41131 icmp_seq=12568 rtt=100.7 ms
len=46 ip=172.16.47.27 ttl=61 id=9062 icmp_seq=31443 rtt=134.2 ms
len=46 ip=172.16.47.27 ttl=61 id=9063 icmp_seq=31444 rtt=124.2 ms
len=46 ip=172.16.47.27 ttl=61 id=9064 icmp_seq=31445 rtt=114.2 ms
len=46 ip=172.16.47.27 ttl=61 id=9065 icmp_seq=31446 rtt=104.2 ms
áááłáá áá° áááľ á¨áŠá áááľáľ ááśá˝ áááááá ááŹáľ ááá áááś ICMP ááá áĽáá˛áá á áľáááááᢠá¨áłááá á áľá°ááá "ááĽá" á¨áá (á ááłááśáš á¨áááš á¨á¨á) á¨áá á ááá áááá¨áľá áŤáŤáá˘
á áá á¨áá¨á¨áťá áĽáŤáᥠááááľáá áááá¨áą á kube-node á ááááŽá˝ áá áĽáť á¨áá¨á°á°á? áĽá áŠá¤-ááľ ááŞá ááá á°ááŁáŠ á áááá áľ áá áá¨á°áłá? áĽáá° áĽáľá ááᣠᨠKubernetes áá áŤáá á áľá°ááá ááŹáľ á ááá áááá áá á áŁá ááá áá ᣠáá á á°ááłáłá âá¨áłáá ááĽáâ á°ááŁáᢠáĽáá°áááá¨áąáľ, á˝áአá áá áá:
theojulienne@shell ~ $ sudo hping3 172.16.47.27 -p 9876 -S -i u10000 | egrep --line-buffered 'rtt=[0-9]{3}.'
len=46 ip=172.16.47.27 ttl=61 DF id=0 sport=9876 flags=RA seq=312 win=0 rtt=108.5 ms
len=46 ip=172.16.47.27 ttl=61 DF id=0 sport=9876 flags=RA seq=5903 win=0 rtt=119.4 ms
len=46 ip=172.16.47.27 ttl=61 DF id=0 sport=9876 flags=RA seq=6227 win=0 rtt=139.9 ms
len=46 ip=172.16.47.27 ttl=61 DF id=0 sport=9876 flags=RA seq=7929 win=0 rtt=131.2 ms
á¨á፠á°ááłáłá áĽáŤááá˝á á¨ááłáá á¨áŠá¤-ááľ ááá áá° ááŤá á áľá°ááá áĽááľáŹáłáá (áá á á¨ááá á áľá°áááá á áŤáŤáľáľá ááááŤáąá ááá áááąáá RX áĽá TX á áŤá áŤáŤáľáłá)á˘
theojulienne@kube-node-client ~ $ sudo hping3 172.16.33.44 -p 9876 -S -i u10000 | egrep --line-buffered 'rtt=[0-9]{3}.'
^C
--- 172.16.33.44 hping statistic ---
22352 packets transmitted, 22350 packets received, 1% packet loss
round-trip min/avg/max = 0.2/7.6/1010.6 ms
á¨áááł ááŹáľ áá¨áťáá˝á á ááááá á ááłááľ á°á¨á᪠áá¨ááá˝á á ááá°ááᢠá á°áááᣠááŞá (á¨áłá˝) áá á á¨áá ááĽá፠áŤáŤáᣠá°ááŁáŠ (á¨áá) áá á áŤáá - á¨á´ááł á ááľ (á á´áŽááśá˝) áááá¨áąáĄ
á á°á¨ááŞá, á á°ááŁáŠ á áŠá ᨠTCP áĽá ICMP áĽá˝áá˝ (á á á°á á°á¨á°á ááĽáŽá˝) áá áŤááá ááŠááľ á¨á°ááá¨áą, ᨠICMP ááŹáśá˝ áááá á á°ááŠá áľ á°ááłáłá á á°á á°á¨á°á áá°ááłá, ááá áá á á°ááŤá¨ áá. á á°ááłáłá áá, ᨠTCP ááŹáśá˝ á ááłááľ áá áĽááľ á ááľ ááŁááŤá, áĽá á ááłááśáš ááŁá áá. á á°ááá ᨠSYN ááŹáśá˝á áá°áŚá˝ á¨áá¨ááŠ, áĽááą á á á°á á°á¨á°á á ááŞá á áŠá áá¸á, ááá áá á á°ááŁáŠ á áŠá á áá°áá.
áĽáá´áľ á ááá áá áľáá˝ ááŠááľ á áá˘
áá á á˛áľ ááá¨áłáĄ á áá áá ááľáĽ ᨠICMP áááá¨áśá˝á á áááľ á áľá°áááá˝ ááŤá¨á áŤááá áááááľ áĽááŤáá ááááá TCP á áŤá°ááááᢠáá áááľá¤á ᨠRX áá¨á ááşáá áá á¨á°áŤáŤá ááá áĽáá°áá˝á áááá¨ááᥠáá¨ááá á¨áá áá°á á RX ááŹáśá˝ áá°áľ áá áĽáá ááážá˝á á ááá áá á áá°ááá˘
áá ááá á¨áá˝á ááááŤáśá˝ áááá ááľáĽ ááŹáśá˝á áááá áŤáľáááłáᢠá áá á¨ááŹáľ áááá á á˝áá á á ááłááľ á¨áŠá¤-ááľ á ááááŽá˝ áá á á°ááŁáŠ á áŠá áĽááłá áĽáááááá˘
á ááááľ á¨ááá ááľáĽ á¨ááŹáľ áá°áľá áá¨áłáľ
á˝áአááá á á ááłáᾠᨠkube-node á ááááŽá˝ áá á á°ááŁáŠ áá áĽáá°áá¨á°áľ ááá¨áłáľ á¨ááááľ á¨ááá áĽá˝áá˝á áĽáá´áľ áĽáá°ááŤáľáŹáľ áĽáááá¨áľá˘
áá° ááá áŁá
áá á á°ááŁá á áľááááľ á¨ááľááá áŤááą ááŹáá á°ááĽá áááŤá
áá
á ááľ áááŤá¨á áááá ááᥠá 10ááš ááľáĽ á 90Mbps á ááłá¨ áá¨áĽ áŤááśá˝ áá áááá¨áľ áááłá áá˝áááŁááá áá á áááá 10á áŤááśá˝ á¨áá°á áá á 15ááá¨á ááŹáśá˝ á á°á¨ááľáŁá¨áľáá˝ áľáááľ áŽá á áááá áĽáŤááłááą áŽá á áááŽá á¨ááá አááá¨áĽ áá˝ááᢠá á°á¨ááľ áááá˝.
ááá¨áĽá áŤáááá¨áĽ ááááľá°áááľ á¨áĽá á ááłáľ á ááľ ááááľ áłáááá˘
áá
á áŁá ááŁá áá, áá á¨á°áᨠá˝áá áááĽáŤá. á áŁá áĽá áĽá˝áá˝ áŤá ᣠá¨á፠ááá áá á¨á ááłá¨ áá¨áĽ áŤááą áá áĽá˝áá˝á áááľáŹáľ áá ᣠáĽá á¨á°á áá áŚáł áá°áśá˝ á áĽáááą áĽááá
á áá¨ááá˝ áŁáś áááľá¨á áá á áááŤá¸áá (ᨠTCP áááááśá˝ ááá ἠᣠááá°)ᢠá áá¨á¨áťá áá¨áááš á°ááá°á ááŹáśá˝á ááŁá áĽááááŤáá. áááá áááááľ á áá°á¨áá áá¨áŤ á¨ááá á áśááľáŞá á ááľ ááľáĽ áá°ááááľ á¨áá°áá á¨ááŹáśá˝ áĽááľ á ááľ áŤááááᢠáá
á ááľ áŤáá á áá á¨á°áᨠáá áááłá ksoftirqd
(á¨ááŤá¨áá¸á á ááąá áŤáŤá ps
áĽááá
á softirqs á¨áá°á áá syscall/áááŤá¨áĽ ááááľ áá á¨ááŤáľá°ááá°á á áŽá)ᢠáá
áá áááááĽá á¨á°áŤáááľ áá°á ááá á¨áá°áľ áááááĽá á áá áá ááᣠáá
á ááĽáśá˝á á á ááŁáĄ áááá°áĽ ááááŤáá˘
á¨ááá áĽá˝áá˝á áĽáá´áľ áĽáá°ááŤá¨ááá áŤá áá
á áá á¨á°áá°á á¨áá¨ááá
áĽáľá áĽááłá áá¨áľ áľá˝ááá
ᢠá¨Softirq áĽáŞáá˝ áŁáá° áá á¨áá°ááą á¨ááᣠáĽá˝áá˝ á ááľááá áŤááľ áá áŁáá RX áá¨á ááľáĽ áááľáŤáľ áá°áá°á áá áá á á
á ááŁá¸áᢠáá
á¨ááá áľ ááááŤáľ ááŽá°á°á áŽáá á áá¨áá¨á ááá á¨áá ááá áŽááą softirq áĽááłáá°áŤ á áá¨áá¨á ááá áá˝ááá˘
áá°áąá áá° ááá ááá áá´ ááĽá áĽ
á¨áśááľáá áááá¨áśá˝ áá áá áááľ áĽáť áá¸áᢠáá ááááŤáłá ááᣠáĽá á áŁá á°ááłáłá á¨áá ááá áĽáŤá¨á áĽáá°áá áĽáááááᢠáľááá ááŁáŠ áĽááá áá áá á˝áá°-ááłáĽ áá¨ááἠáá. áĽá á¨á°á¨ááá , ááááá¨áśá˝ ááááŤáąá áŤáá.
áá° áááá°á ááŹááťá˝á áĽááááľáĄ-
len=46 ip=172.16.53.32 ttl=61 id=29573 icmp_seq=1953 rtt=99.3 ms
len=46 ip=172.16.53.32 ttl=61 id=29574 icmp_seq=1954 rtt=89.3 ms
len=46 ip=172.16.53.32 ttl=61 id=29575 icmp_seq=1955 rtt=79.2 ms
len=46 ip=172.16.53.32 ttl=61 id=29576 icmp_seq=1956 rtt=69.1 ms
len=46 ip=172.16.53.32 ttl=61 id=29577 icmp_seq=1957 rtt=59.1 ms
len=46 ip=172.16.53.32 ttl=61 id=29790 icmp_seq=2070 rtt=75.7 ms
len=46 ip=172.16.53.32 ttl=61 id=29791 icmp_seq=2071 rtt=65.6 ms
len=46 ip=172.16.53.32 ttl=61 id=29792 icmp_seq=2072 rtt=55.5 ms
áá°á á˛á áĽáá°á°áĽáŤáŤáᣠáĽááá á¨ICMP áĽá˝áá˝ áá° á ááľ RX NIC áá¨á ááĽá°á á á ááľ á˛áአáŽá ááᢠááááľ áĽáá´áľ áĽáá°áá°áŤ ááá¨áłáľ á¨áááá áá°áąá ááá¨áłá°á á¨áľ (á á¨áľáá á˛áአáŽá) áĽá (softirq, ksoftirqd) áĽááá áĽá áá˝ áĽáá´áľ áĽáá°áá°áŠ ááá á áá áá.
á áá á¨ááááľ á¨áááá á áĽááá°á áá áĽááľáľá¨áłá°á á¨ááŤáľá˝áááľá ááłáŞáŤáá˝ ááá áá ááá á áá ááᢠáĽáá
á°á áááá˘
áĽáá
áŤáá áĽá
áľ ááá ááᥠá¨ááá áĽááá
á á áá˛á¤áá ááá áĽáá°ááŤáľáŹáľ áĽáááááᣠáľááá
á á¨ááá á°ááŁá áá ááá áá áĽáá°áááá hping3
á¨á áŤáá˘
áŽáľ icmp_echo
áŤáľá°áááá struct sk_buff *skb
: áá
"á¨ááľá°ááŁáľ áĽáŤá" áŤáá ááŹáľ ááᢠáĽá á°á¨áłáľáá, á
á°á á°á¨á°áá˝á áááŁáľ áĽáá˝ááá echo.sequence
(á¨áá
áá áááťá¸áŤáᢠicmp_seq
á hping3 вŃŃĐľ
) áĽá áá° á°á áá áŚáł áááŠáľá˘ á¨á ááá áá°áľ áľá/ááłáá፠áááŤáá ááš ááᢠá¨á¨ááá áĽá˝áá˝á á ááŤá¨áááá áľ áá á ááĽáł á¨áááŤá¸á áá¤áśá˝ á¨áá
á áłá˝ á áá˘
TGID PID áá°áľ áľá ICMP_SEQ 0 0 áľááá/11 770 0 0 áľááá/11 771 0 0 áľááá/11 772 0 0 áľááá/11 773 0 0 áľááá/11 774 20041á 20086 775 0 áľááá/0 11 776 0 swapper/0 11 777 0 spokes-report-s 0
áĽáá
áá á ááá°-á˝áá ááľáĽ ááłáá
á áá áľ softirq
á¨áľáááľ áĽáŞáá˝á áŤá°á¨á áá°áśá˝ áĽáá° âáá°áśá˝â ááá á¨ááłáŠáľ á áĽáááą á á¨ááá á ááľ ááľáĽ áĽá˝áá˝á á°á
áááą á á°á á á áááł á¨ááŤáľáŹáľ á¨ááá ááá˘
á áá
ááłáŞáŤ á¨á°áá°á áá°áśá˝á áááá¨áąá á¨ááŤáłáŠ á¨á°áá°á áĽá
áá˝ áá ááŤáŤá áĽáá˝ááá hping3
. ááá áĽááľáááᢠgrep
á áá
áá¨áť áá áá°áá°á áĽá´áśá˝ icmp_seq
. á¨áá á¨á°á ááąáľ icmp_seq áĽá´áśá˝ áá á¨ááááą áĽá˝áá˝ á¨áá á¨á°ááá¨áľáá¸á á áá˛á˛ áá á°ááá¸áá (á á
áá ááľáĽ á¨50 áá´ áŁáá° áá á á áá˛á˛ áĽá´áśá˝ ááááŤáľ áŤáŁáá¸á áááŹáśá˝ á¨áá á á á¨RTT áĽá´áśá˝ á á)
TGID PID áá°áľ áľá ICMP_SEQ ** RTT -- 10137 10436 cadvisor 1951 10137 10436 cadvisor 1952 76 76 ksoftirqd/11 1953 ** 99ms 76 76 k11softirqd1954ms/89softirqd76 76 ** 11ms 1955 79 ksoftirqd/76 76 ** 11ms 1956 69 ksoftirqd/76 76 ** 11ms 1957 59 ksoftirqd/76 76 ** (11ms) 1958 49 ksoftirqd/76 76 ** (11ms) 1959 39 ksoftirqd/76 ksoftirqd/76 ksoftirqd/11 / 1960 29 ** (76ms) 76 11 ksoftirqd/1961 19 ** (76ms) -- 76 11 cadvisor 1962 9 10137 cadvisor 10436 2068 10137 ksoftirqd/10436 ksoftirqd/2069 76 76 11 ksoftirqd/2070 75 76 ** 76ms 11 2071 ksoftirqd/ 65 76 ** 76ms 11 2072 ksoftirqd/55 76 ** (76ms) 11 2073 ksoftirqd/45 76 ** (76ms) 11 2074 ksoftirqd/35 76 ** (76ms) 11 ksoftirqd/2075 25 ** (76ms) 76 11 ksoftirqd/2076 15 ** (76ms) 76 ksoftirqd ) 11 2077 ksoftirqd/5 XNUMX ** (XNUMXms)
áá¤áśáš áĽá áááŽá˝á ááááŠáá. á ááááŞáŤ áĽááá
áá ááŹáá˝ á ááá°-á˝áá áá¨áááá ksoftirqd/11
. áá
áááľ ááá
áአáĽááľ áá˝áὠᨠICMP ááŹáśá˝ á á°ááŁá áá¨á¨áť áá áá° áŽá 11 á°ááááᢠá á°á¨ááŞá áá¨ááá
á áááá áľ áá áá á áľáááľ áĽáŞ á ááľ ááľáĽ á¨áááá ááŹáśá˝ áĽááłá áĽááŤááᢠcadvisor
... á¨á፠ksoftirqd
á°ááŁáŠá á°á¨áጠá¨á°á¨áḠáá¨ááá áŤáŤááłá: á áľááá á áá á¨á°á áŤáá ááŹáśá˝ áĽááľ cadvisor
.
á¨áą á ááľ áá áá á¨áá áŤá áĽáááł cadvisor
, á á˝áአááľáĽ áŤááá á°áłáľá áŤááááłá. á¨ááááá á ááá ááá˘
áá áĽáá°ááá˝ á¨ááŤáŁáá˝ áá˝áłáá˝áŁ áĽááá áá á áŁá á¨á°áťáťá ááłáŞáŤáá˝ áá¸á áĽá á á ááłááľ áŤáá°á á á áááłáá˝ ááľáĽ á¨á áááá ááłáŽá˝á ááŤáá áá˝áá á°áĽá áá á ááá˘
á¨ááŹáľ áá¨ááá á¨ááŤááá¨á áŤáľáŞá°á áá áŤá°ááá?
á áá áĽáá˝áą áĽáá´áľ áĽáá°áá¨á°áľáŁ á áá áá°áľ áá áĽáá°ááá áĽá á á¨áľáá á˛áአáá áĽáŠ áááᤠá ááá°ááᢠá á ááŤáŤ áĽááł ááááŤáľ á¨ááááľ á¨ááá á¨áá á°ááł ááááŁáľ áá áĽáá°ááá áĽááŤáá ksoftirqd
. áĽá áĽá˝áá˝ á ááá°-á˝áá ááľáĽ áĽáá°áá አáĽááŤáá cadvisor
. áĽáá°áá ááááľ ááááŤáłá ááᢠcadvisor
áááá syscall ááááŤá ᣠá¨á፠á áá ááá áĽá˝áá˝ áá¨áááá
áá
á˝áá°-ááłáĽ áá, áá áĽáá´áľ áĽáá°ááá¨á? áĽá ááľá¨á á¨ááá˝áá á áá
áá°áľ ááľáĽ á¨á˛áአáŽáá áá¨áłá°á áá ᣠá¨ááŹáśá˝ áĽááľ á¨á ááľ á áá á¨áááľá áľ áĽá ksoftirqd á¨áá áŤá áľá ááĽáĽ áááá áĽá á¨á፠ááĽáĽ á ááľ á áľááá á á˛áአáŽá áá áá áĽá¨á°áŤ áĽáá°áá ᨠááá¨áľ áľáá˝ áá° áá áááá¨áąá˘ . á á¨áĽááľ ááá°á¨ááśá˝ á˛ááŠáá áŤá
áĽáá°ááľááἠááᢠáĽáá°áá
áŤá ááá áááľááá˘
á áážáľ áá
áá á áá áŁááľ ááłáŞáŤáá˝ áá¨ááá áá˝áá. áááłá, ksoftirqd
:
# record 999 times a second, or every 1ms with some offset so not to align exactly with timers
sudo perf record -C 11 -g -F 999
# take that recording and make a simpler stack trace.
sudo perf script 2>/dev/null | ./FlameGraph/stackcollapse-perf-ordered.pl | grep ksoftir -B 100
áá¤áśáš áĽáááĄ-
(ŃĐžŃни ŃНодОв, кОŃĐžŃŃĐľ вŃгНŃĐ´ŃŃ ĐżĐžŃ
ОМиПи)
cadvisor;[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];entry_SYSCALL_64_after_swapgs;do_syscall_64;sys_read;vfs_read;seq_read;memcg_stat_show;mem_cgroup_nr_lru_pages;mem_cgroup_node_nr_lru_pages cadvisor;[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];entry_SYSCALL_64_after_swapgs;do_syscall_64;sys_read;vfs_read;seq_read;memcg_stat_show;mem_cgroup_nr_lru_pages;mem_cgroup_node_nr_lru_pages cadvisor;[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];entry_SYSCALL_64_after_swapgs;do_syscall_64;sys_read;vfs_read;seq_read;memcg_stat_show;mem_cgroup_iter cadvisor;[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];entry_SYSCALL_64_after_swapgs;do_syscall_64;sys_read;vfs_read;seq_read;memcg_stat_show;mem_cgroup_nr_lru_pages;mem_cgroup_node_nr_lru_pages cadvisor;[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];[cadvisor];entry_SYSCALL_64_after_swapgs;do_syscall_64;sys_read;vfs_read;seq_read;memcg_stat_show;mem_cgroup_nr_lru_pages;mem_cgroup_node_nr_lru_pages ksoftirqd/11;ret_from_fork;kthread;kthread;smpboot_thread_fn;smpboot_thread_fn;run_ksoftirqd;__do_softirq;net_rx_action;ixgbe_poll;ixgbe_clean_rx_irq;napi_gro_receive;netif_receive_skb_internal;inet_gro_receive;bond_handle_frame;__netif_receive_skb_core;ip_rcv_finish;ip_rcv;ip_forward_finish;ip_forward;ip_finish_output;nf_iterate;ip_output;ip_finish_output2;__dev_queue_xmit;dev_hard_start_xmit;ipip_tunnel_xmit;ip_tunnel_xmit;iptunnel_xmit;ip_local_out;dst_output;__ip_local_out;nf_hook_slow;nf_iterate;nf_conntrack_in;generic_packet;ipt_do_table;set_match_v4;ip_set_test;hash_net4_kadt;ixgbe_xmit_frame_ring;swiotlb_dma_mapping_error;hash_net4_test ksoftirqd/11;ret_from_fork;kthread;kthread;smpboot_thread_fn;smpboot_thread_fn;run_ksoftirqd;__do_softirq;net_rx_action;gro_cell_poll;napi_gro_receive;netif_receive_skb_internal;inet_gro_receive;__netif_receive_skb_core;ip_rcv_finish;ip_rcv;ip_forward_finish;ip_forward;ip_finish_output;nf_iterate;ip_output;ip_finish_output2;__dev_queue_xmit;dev_hard_start_xmit;dev_queue_xmit_nit;packet_rcv;tpacket_rcv;sch_direct_xmit;validate_xmit_skb_list;validate_xmit_skb;netif_skb_features;ixgbe_xmit_frame_ring;swiotlb_dma_mapping_error;__dev_queue_xmit;dev_hard_start_xmit;__bpf_prog_run;__bpf_prog_run
áĽáá áĽá áááŽá˝ á á ááá áá ááá ááá áá°á á˛á á ICMP áááá፠ááľáĽ áŤá¨ááá "áŤáľáŞá°á ᨠksoftirqd á ááľ" áľááá°-áĽááľ ááááłá˝á ááᢠáá áááľ áá?
áĽáŤááłááą ááľáá á á°áá°á áá ááľáĽ á¨á˛áአáá¨áłá°áŤ ááᢠá á ááľ ááľáá áá áŁáá ááá áá áŤáá áĽáŤááłááą áĽáŞ á á´ááŽáá áááŤáᢠá ááľááŽáš ááá áá á˛áľáŤá á˛á ፠áĽááŤáááĄ- read(): .... ;do_syscall_64;sys_read; ...
. áľááá
áŤáľáŞá°á á áľáááľ áĽáŞ áá áĽá áá áŤáłááá read()
á°ááŁáŤáľ áá á¨á°áŤáŤá mem_cgroup_*
(á¨áĽáŞ ááá/á¨ááľáአáá¨á¨áť)á˘
á áľááá áá áĽá¨á°áá á áĽááłá á áĽáŞ áąáŤ ááľáĽ áá¨áľ á¨áááá˝ ááᣠáľááá
áĽááŠáĽ strace
áĽá áŤáľáŞá°á á¨ááŤá°áááá áĽáá áĽá á¨100 áá´ á áá á¨áľáááľ áĽáŞáá˝á áĽáááá˘
theojulienne@kube-node-bad ~ $ sudo strace -p 10137 -T -ff 2>&1 | egrep '<0.[1-9]'
[pid 10436] <... futex resumed> ) = 0 <0.156784>
[pid 10432] <... futex resumed> ) = 0 <0.258285>
[pid 10137] <... futex resumed> ) = 0 <0.678382>
[pid 10384] <... futex resumed> ) = 0 <0.762328>
[pid 10436] <... read resumed> "cache 154234880nrss 507904nrss_h"..., 4096) = 658 <0.179438>
[pid 10384] <... futex resumed> ) = 0 <0.104614>
[pid 10436] <... futex resumed> ) = 0 <0.175936>
[pid 10436] <... read resumed> "cache 0nrss 0nrss_huge 0nmapped_"..., 4096) = 577 <0.228091>
[pid 10427] <... read resumed> "cache 0nrss 0nrss_huge 0nmapped_"..., 4096) = 577 <0.207334>
[pid 10411] <... epoll_ctl resumed> ) = 0 <0.118113>
[pid 10382] <... pselect6 resumed> ) = 0 (Timeout) <0.117717>
[pid 10436] <... read resumed> "cache 154234880nrss 507904nrss_h"..., 4096) = 660 <0.159891>
[pid 10417] <... futex resumed> ) = 0 <0.917495>
[pid 10436] <... futex resumed> ) = 0 <0.208172>
[pid 10417] <... futex resumed> ) = 0 <0.190763>
[pid 10417] <... read resumed> "cache 0nrss 0nrss_huge 0nmapped_"..., 4096) = 576 <0.154442>
áĽááľá áĽáá°áá áĽááľáŁ áĽáá
áááá áĽáŞáá˝á áĽááŤááᢠread()
. á¨ááŁáĽ ááááá˝ áĽá á ááľ áááśá˝ mem_cgroup
áĽááá
á°ááłáŽáśá˝ áĽááłá ááá˝ ááᢠread()
áááá á°ááá¨áľ memory.stat
á¨áá
á°á¨ áľááľáł á á áááá áĽá á¨áĄáľá áľáĽáľáŚá˝á (á¨áśá¨á áŞáśááľ áááá á´áááá) áŤáłáŤáᢠá¨áŤáľáŞá°á ááłáŞáŤá áááŤáŁáá˝ á¨áá¨á á á ááá áá¨á áááááľ áá
áá ááá áá áááᢠá¨ááá ááá áŤáľáŞá°á áŤáá°á á á ááá áĽáŤá°á¨á áááá áĽáááľá˝áĄ-
theojulienne@kube-node-bad ~ $ time cat /sys/fs/cgroup/memory/memory.stat >/dev/null
real 0m0.153s
user 0m0.000s
sys 0m0.152s
theojulienne@kube-node-bad ~ $
á áá áľá á°áąá áĽáá°áá ááŁááľ áĽá á¨ááááľ á¨ááá á¨ááśáá á˝áá áĽááłáá áľ áá¨áłáľ áĽáá˝áááá˘
á¨ááŁáĽ áááá á áŁá áááá á¨ááá ááááľáá?
á áá
á°á¨á, áľá á°ááłáłá á˝ááŽá˝ á¨ááá˝ á°á áááá˝ áááááśá˝á ááááľ á áŁá ááá áá. áĽáá° á°ááá ᣠá áŤáľáŞá°á áá¨áłá°áŤ ááľáĽ áá
áľá
á°áľ áĽáá° á°ááá
á˝áአáĄáľáá˝ á áľá áŚáł (áŽáá´ááá) ááľáĽ áŤááá á¨áá á°á¨ áľááľáł á á ááá áááľ ááľáĽ áŤáľááŁáᢠá áá áľáĽáľáĽ ááľáĽ áŤááľ ááá áá°áśá˝ á˛ááĄáŁ áśá¨á á¨áá á°á¨ áľááľáł áĄáľáá ááááᢠááá áĽáá "áá á°á¨ áľááľáł" á¨áá°áľ áá á°á¨ áľááľáł áĽáť á áá°áá. ááá áĽááłá á¨áá°áą áá á°á¨ áľááľáł á áŤáą áĽá á áá áŁáááá, á¨ááá á ááá á¨á°á¸áᥠáááśá˝á áĽáá° áĽááľ áĽá á˘ááśá˝ (áá፠áĽá ááá ááłáłáł) áááľáŁá, áĽááá á á áá á°á¨ áľááľáł áľáĽáľáĽ ááľáĽ á¨á°á¸áᥠáá¸á. á¨á˝áá ááááŤááĄ-
á¨ááᢠáľáĽáľáŚá˝: ááá áá°áśá˝ á¨ááá¸á áĽá á¨á°á°á¨á, áá á ááá áá á°á¨ áľááľáł á°ááľá áá (á áĽá áááł, á¨áĽááľ áá¸ááŤ, ááá áá á¨áá˝ áá¸á፠ááá tmpfs ááá°áĽ áá˝áá).
áĄáľáá á áááá áľ áá á áŤáźá ááľáĽ áŤááľ ááá ááá˝ á¨á¨ááá áźá á áŁá á ááá ááá áá˝áá ᣠáľáááá á°áá áá°áľ ááá¨áŁá áĽááá áážá˝ áĽáá°áá áĽáľáŞá á¨á áľá¨áľ áá áĽá áĽá á áá¨á¨áťá áá á°á¨ áľááľáłá á ááŤáľáááá áľ áá áĄáľáá áŤá áąá˘ áĽáľá¨áá ááĽáĽ áľá¨áľ, ááŠá áľáłá˛áľá˛ááľá á áá°á áľáĄá áľ áá á ááá áááľ ááľáĽ áááŁá.
á¨á áááá á áááᣠáľááľáłá áá ááťá¸á ááľáááľááľ á¨ááááᥠá ááłááľ á¨á°á¸áá áá
á°á¨ áľááľáłá áá° áá á áá°á á¨ááááŞáŤáá á˝áłáľ ááá áᢠáá
áĽáŠ ááᢠá¨ááá á¨á°á¸áá áá áá
á°á¨ áľááľáł á¨áá¨á¨áťáá á˛á áá ᣠááŠá á áá¨á¨áť áá¸áłá ᣠáľáááá âááâ ááŁá á áá˝ááᢠáĽáá° á áááłá°á áá á¨ááá áá´á áአá á°ááŁá á memory.stat
á áá
á¨á¨ááá áĽáŞáľ (4.9) á á ááááŽáťá˝á áá áŤáá á¨áá°á áá á áŤáá áá
á°á¨ áľááľáł áá á°áłáᎠá¨á
áἠáááá á¨á°á¸áá áłáł áá°áá á¨á áľ áááááľ áĽá á¨áĄáľá ááá˘áá˝á ááá˝áłáľ áĽá áá áááľáłá áááľ ááá˘
á ááłááľ á¨áĽá á áááá˝ á áŁá áĽá áľáĽáľáĽ ááá˘áá˝ áľááá áŻá¸á ááŁáĄ áĽá áááá¨áľ á¨á ááľ á°á¨ááľ á áá á áááá˘
ááŤáľáŞá°á á˝áá áááľáá á áľáá áą ááľáĽ áŤá á¨áĽááľ áá¸ááŤáá˝/á˘ááśá˝ áá¸ááŤáá˝á áá˛áŤáá áá ááľá¨á á˛áá áá á áá˛áŤáá á¨ááŁáĽ áááá¨áľá áĽáá˛áá á á áľá°ááá áá áŤááá á¨ááľááá áááá¨áľ áŤáľáááłá ááááŤáąá áá¸ááŤáá áá˝áłáľ á¨á°á¸áᥠá¨ááᢠáĄáľá áážá˝á áá¨ááłá áĽá áĽááąáá áá áŤááŁá¸ááᢠáá áááľá á áá°áá, ááá áá á¨á˝ááŠá áááľá¤ áŤá¨áááŁá.
á á á˛áśáš á¨á¨ááá áľáŞáśá˝ (4.19+) á¨áĽáŞ á ááťá¸á á°áťá˝ááᢠmemory.stat
áľááá
áá°áá
á¨ááá ááá¨á á˝ááŠá á áľá°áŤáááᢠá á°ááłáłá ááᣠá˝áá áŤááŁá¸áá á áááá˝ á áŠá áááľáľ áááľá°á ááľáĽ á¨ááááá áľáŁ á ááŤáá áááł áááá°áľ áĽá áĽáá°áá áááľááłáľ ááłáŞáŤáá˝ áá áŠáᢠáááá ááááá˝ á áá á áᣠá¨áá°á áááá¨áľ áŤáá¸áá á áááá˝ á ááá°á áłáá á áľááłáá¸áᢠáá
á ááŞááš á ááááŽá˝ áá áľááá° ááááá ááááá áá á°á áá˘
ááá ááá
áá áłá፠ᨠRX NIC áá¨á áá°áľá á ááś ááá°á¨ááśá˝ áľáááᣠá á ááľ áá áááąáá á á áá áááááśá˝ áĽá á áááááľ ááá áááá¨áľ ááᣠáááłá MySQL áĽáŤááá˝ áĽá á¨ááá˝ áĽá˝áá˝ áá áááąáá á¨áá°á áááá¨áľ á áľá¨áľááá˘
áĽáá° áŠá áááľáľ áŤá á áŁá áá á¨áłá áľáááśá˝á áá¨áłáľ áĽá á ááááá áá á á
á áĽááą áá á°ááľáá°á áááá á áááááśá˝ á áľá°áááááľ áĽá ááĽááľ ááłá ááᢠáĽáŤááłááą á¨ááŤááąáľ áľáááľ á¨Kubernetes á¨á ááťá¸á ááťáťáŤáá˝á áá áááá˘
ááá: hab.com