Silly experiments with netisr

Adrian Chadd adrian at freebsd.org
Thu Feb 5 19:13:27 UTC 2015


On 5 February 2015 at 11:03, Sean Bruno <sbruno at ignoranthack.me> wrote:
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA512
>
> Some questions came up around the office and we ended up doing some
> quite silly things with lo0 and netcat.
>
> If one runs a continuous netcat on localhost to another netcat listener
> on localhost that writes the output to /dev/null, netisr gets super busy
> doing stuff/things.
>
> E.g.
>   -- listener running "nc -k -l 10000 > /dev/null"
>   -  sender running in a while loop "nc -N localhost 10000 <
> /var/tmp/testfile"
>
> Interesting things start happening on the machine.  top -SH shows netisr
> eating up about 1/2 of a cpu core.  If you drop the MTU on lo0 to 1500
> (so that it looks like something in the real world), netisr will peg out
> a cpu core.  This seems logical, in that smaller MTU means busier
> netisr.  Its interesting though.
>
> Looking at some pmcstat things, shows that the system is busilly
> chugging along in tcp_do_segment().  I wonder if this is meaningful in
> anyway or just "interesting".
>
> PMC: [FR_RETIRED_X86_INSTRUCTIONS] Samples: 267614 (100.0%) , 12350
> unresolved

UHm, on a recent intel, use CPU_CLK_UNHALTED instead, so you get an
idea of which instructions are spending the most time doing "stuff".
Some instructions are costlier than others (eg things that cause
memory bus stalls.)

> %SAMP IMAGE      FUNCTION             CALLERS
>   5.5 kernel     in_cksumdata         in_cksum_skip

.. we're checksumming localhost tcp? :)



-adrian

>   5.0 kernel     tcp_output           tcp_do_segment:4.2 tcp_usr_rcvd:0.5
>   4.6 kernel     __rw_wlock_hard      tcp_usr_send:3.7 tcp_usr_rcvd:0.8
>   3.8 pf.ko      pf_test              pf_check_in:2.0 pf_check_out:1.8
>   3.6 kernel     sched_idletd         fork_exit
>   3.2 pf.ko      pf_test_state_tcp    pf_test
>   3.1 kernel     bzero                pf_test:0.8 pf_test_state_tcp:0.7
>   3.1 kernel     bcopy                m_copydata:1.3 tcp_addoptions:0.7
> tcp_dooptions:0.5
>   2.7 kernel     tcp_do_segment       tcp_input
>
>
> sean
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2
>
> iQF8BAEBCgBmBQJU075kXxSAAAAAAC4AKGlzc3Vlci1mcHJAbm90YXRpb25zLm9w
> ZW5wZ3AuZmlmdGhob3JzZW1hbi5uZXRCQUFENDYzMkU3MTIxREU4RDIwOTk3REQx
> MjAxRUZDQTFFNzI3RTY0AAoJEBIB78oecn5kc4kH/02ttXzvapAG2PSML9Ml0Kwf
> XblpOHnrhUU8jsTauGhh8q4C94rb9hFDCzL4cEAI87QMXoBQHi9CWE0v/XdeR+8M
> ajpHlNyd78XbmIKOVksesYWzLbVFjC0A3emnkH4dUX1XD6tJoihVaUQVcrAbNm+I
> p6Z4yXrOXUP9UxBgkCSe5m3Y/K3vcmIPvFSnO/nN/2tckEh6+uuj1n3QyFXkUJJg
> 9erFanvDXr3nOyR6IWXIKxuy1yta32SpOPxywIl81qSBh1n/IOor41WqpzOnlNdM
> d0np+ZD/d+Z9OQJZnuJunCrV6Cv2EFKJe5qBzCdOjLj0KvpNDnFXyndWpeXyvgI=
> =+FSJ
> -----END PGP SIGNATURE-----
>
>
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"


More information about the freebsd-net mailing list