рд╕рд░реНрд╡рд░ рдкрд░ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рд▓реЛрдб рдиреЗрдЯрд╡рд░реНрдХ рддрдВрддреНрд░ рдмрдирд╛рддрд╛ рд╣реИ?

рдЬрдм рд╕рд░реНрд╡рд░ рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрдХреЗрддрдХ рдЬреИрд╕реЗ рдХрд┐ рд╡рд┐рд▓рдВрдмрддрд╛, рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдереНрд░реВрдкреБрдЯ рдФрд░ рдкреИрдХреЗрдЯреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб (рдкреАрдкреАрдПрд╕, рдкреИрдХреЗрдЯреНрд╕ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб) рд╕рдВрд╕рд╛рдзрд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдЗрди рд╕рдВрдХреЗрддрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдзреНрдпрдпрди рдХреЗ рддрд╣рдд рдХрдВрдкреНрдпреВрдЯрд░ рдЕрдзрд┐рдХрддрдо рд▓реЛрдб рдХреНрдпрд╛ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрджреНрдпрдкрд┐ рдпреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ рдФрд░ рдЕрдХреНрд╕рд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдХрд╣рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддреЗ рд╣реИрдВ, рд╡реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкреИрдХреЗрдЯ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдХреНрдпрд╛ рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдЗрд╕рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рд╕рд╛рдордЧреНрд░реА рд╕рд░реНрд╡рд░ рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рддрдВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рднрд╛рд░ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд▓рд┐рдирдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЪрд▓ рд░рд╣реА рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп рдХрд┐рддрдирд╛ "рдЪреБрд░рд╛" рд╕рдХрддрд╛ рд╣реИред





рд▓рд┐рдирдХреНрд╕ рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг


Linux, рд╕рдВрдЧрдд IRQ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдордп рдкреНрд░реЛрд╕реЗрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рд╕реА рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреИрдХреЗрдЯ рдХреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕рд┐рд╕реНрдЯрдо рдЕрдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рдЗрдВрдЬрди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЪрдХреНрд░ рдХреЛ рдХрд┐рд╕реА рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрди рдХрд░реЗрдЧрд╛ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИред рдпрд╣ рддрдм рднреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬрдм рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЯреАрдо topрдпрд╣ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддреА рд╣реИ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ 99% рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ 60% рд╕рдордп рдкреИрдХреЗрдЯ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реНрд╡рдпрдВ, рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реБрдП, рдХреЗрд╡рд▓ 40% CPU рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред

рднреАрддрд░ рдХрд╛ рд╣реИрдВрдбрд▓рд░net_rx_actionрдЖрдорддреМрд░ рдкрд░ рдмрд╣реБрдд, рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 25 ╬╝ рд╕реЗ рдХрдо рдореЗрдВред (рдпрд╣ рдбреЗрдЯрд╛ eBPF рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдорд╛рдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрджрд┐ рдЖрдк рд╡рд┐рд╡рд░рдгреЛрдВ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ net_rx_action ред) рдкреНрд░реЛрд╕реЗрд╕рд░ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЙрдлреНрдЯрдЖрдИрдЖрд░рдХреНрдпреВ рдЪрдХреНрд░ рдХреЛ рдХрд╛рд░реНрдп рд╕реНрдердЧрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ NAPI рдЙрджрд╛рд╣рд░рдг (NIC рдпрд╛ RPS) рдкреНрд░рддрд┐ 64 рдкреИрдХреЗрдЯ рддрдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ, рдмрд┐рдирд╛ рдмреНрд░реЗрдХ рдХреЗ, 10 рд╕реЙрдлреНрдЯрд░рдХреНрдпреВ рдЪрдХреНрд░ рддрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рд▓рдЧрднрдЧ 2 рдПрдордПрд╕ рд▓реЗрддрд╛ рд╣реИ (рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдХрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ __do_softirq)ред рдпрджрд┐ рд╕реЙрдлреНрдЯрд░рдХреНрдпреВ рд╡реЗрдХреНрдЯрд░, рдЪрдХреНрд░реЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдмреАрдд рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╛ рд╕рдордп рдмреАрдд рдЧрдпрд╛ рд╣реИ, рдЕрднреА рднреА рдЕрдирд╕реБрд▓рдЭреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ, рддреЛ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдереНрд░реЗрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рджреЗрд░реА рд╣реЛ рд░рд╣реА рд╣реИksoftirqdрд╡рд┐рд╢рд┐рд╖реНрдЯ CPUред рдЬрдм рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕рд┐рд╕реНрдЯрдо рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрдЪрд╛рд▓рди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдЕрд░реНрде рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдкрд╛рд░рджрд░реНрд╢реА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдЗрд╕ рдзрд╛рд░рдгрд╛ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕реЙрдлреНрдЯрд░рдХреНрдпреВ рд╣реИ, рдЬреЛ рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ, рдФрд░ рдХреБрдЫ рдФрд░ рдирд╣реАрдВ) ред

рдЙрдкрд░реЛрдХреНрдд рд╕рдВрдХреЗрддрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ perf:

sudo perf record -a \
        -e irq:irq_handler_entry,irq:irq_handler_exit
        -e irq:softirq_entry --filter="vec == 3" \
        -e irq:softirq_exit --filter="vec == 3"  \
        -e napi:napi_poll \
        -- sleep 1

sudo perf script

рдпрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдо рд╣реИ:

swapper     0 [005] 176146.491879: irq:irq_handler_entry: irq=152 name=mlx5_comp2@pci:0000:d8:00.0
swapper     0 [005] 176146.491880:  irq:irq_handler_exit: irq=152 ret=handled
swapper     0 [005] 176146.491880:     irq:softirq_entry: vec=3 [action=NET_RX]
swapper     0 [005] 176146.491942:        napi:napi_poll: napi poll on napi struct 0xffff9d3d53863e88 for device eth0 work 64 budget 64
swapper     0 [005] 176146.491943:      irq:softirq_exit: vec=3 [action=NET_RX]
swapper     0 [005] 176146.491943:     irq:softirq_entry: vec=3 [action=NET_RX]
swapper     0 [005] 176146.491971:        napi:napi_poll: napi poll on napi struct 0xffff9d3d53863e88 for device eth0 work 27 budget 64
swapper     0 [005] 176146.491971:      irq:softirq_exit: vec=3 [action=NET_RX]
swapper     0 [005] 176146.492200: irq:irq_handler_entry: irq=152 name=mlx5_comp2@pci:0000:d8:00.0

рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИ (рдЗрд╕рд▓рд┐рдП swapperрдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ ), рдЖрдИрдЖрд░рдХреНрдпреВ рдХреЛ рд╕реАрдкреАрдпреВ 5 рдкрд░ рдЖрд░рдПрдХреНрд╕ рдХрддрд╛рд░ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕реЙрдлреНрдЯрд┐рд░рдХреНрдпреВ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рджреЛ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, 64 рдкреИрдХреЗрдЯ рдкрд╣рд▓реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдлрд┐рд░ 27. рдЕрдЧрд▓реЗ рдЖрдИрдЖрд░рдХреНрдпреВ рдХреЛ 229 ╬╝s рдХреЗ рдмрд╛рдж рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЪрдХреНрд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

рдпрд╣ рдбреЗрдЯрд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдкреНрд░рдгрд╛рд▓реА рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓реЗрдХрд┐рди рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░, рдХреЛрдИ рднреА рдХрд╛рд░реНрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрдкрд░реЛрдХреНрдд рдХреНрд░рдо рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдирд╛ рдФрд░ IRQ / SoftIRQ рдХрд╛рд░реНрдп рдХрд░рдирд╛ред рдЗрд╕реА рд╕рдордп, рд╕рд┐рд╕реНрдЯрдо рдЕрдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рдкреНрд░реЛрд╕реЗрд╕рд░ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд▓реЛрдб рдХреЛ рдмрд╛рдзрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдиреЗрдЯрд╡рд░реНрдХ рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рд░реНрдп рдЖрдорддреМрд░ рдкрд░ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рд▓реЛрдб рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдЯреВрд▓ рд╕реЗ рдЫрд┐рдкреЗ рд╣реЛрддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ "рдкреАрдбрд╝рд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛" рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреБрдЫ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░реВрдк рд╕реЗ рдЪрдпрдирд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╣рдореЗрдВ рдХреБрдЫ рд╕рд╡рд╛рд▓реЛрдВ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдкреИрдХреЗрдЯ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рд╕рдордп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрд╛рдзрд┐рдд рд╣реЛрддреА рд╣реИ, рдЗрд╕рдХрд╛ рдЕрдиреБрдорд╛рди рдХреИрд╕реЗ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдП? рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╣рд▓ рдХрд┐рдП рдЧрдП рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдЙрдирдХреЗ рдХрдо рдкреНрд░рднрд╛рд╡ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП 2 рд╡рд┐рднрд┐рдиреНрди рдиреЗрдЯрд╡рд░реНрдХ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ?

рдЖрд░рдПрд╕рдПрд╕, рдЖрд░рдкреАрдПрд╕, рдЖрд░рдПрдлрдПрд╕ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЖрдорддреМрд░ рдкрд░ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреЗ рдмреАрдЪ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЙрдкрд░реЛрдХреНрдд рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЕрдиреБрдХреНрд░рдо рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реАрдкреАрдпреВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдЬреИрд╕реЗ рд╣реА рдкреИрдХреЗрдЯ рдЖрдЧрдорди рдХреА рджрд░ рдмрдврд╝рддреА рд╣реИ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо 100,000 рдкреИрдХреЗрдЯ рдХреА рдЧрддрд┐ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдФрд░ рдЕрдзрд┐рдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рдкреНрд░рддреНрдпреЗрдХ рд╕реАрдкреАрдпреВ рдХреЛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд╣рдЬрд╛рд░реЛрдВ рдпрд╛ рджрд╕рд┐рдпреЛрдВ рд╣рдЬрд╛рд░ рдкреИрдХреЗрдЯреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдкреИрдХреЗрдЯреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╕рд░реНрд╡рд░ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред

рдЗрд╕ рдкреНрд░рднрд╛рд╡ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рдПрдХ рддрд░реАрдХреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рд╡рд┐рддрд░рд┐рдд рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЕрдХреНрд╖рдо рдХрд░рдирд╛


рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЪрд▓реЛ рдЖрд░рдкреАрдПрд╕ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдХреЗ рдФрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЬреНрдЮрд╛рдд рдПрдХрдорд╛рддреНрд░ рд╕реАрдкреАрдпреВ рдкрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореИрдХ рдкрддреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдкреИрдХреЗрдЯреЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдЖрд░рдкреАрдПрд╕ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдХреЗ рдФрд░ рдкреИрдХреЗрдЯ рдирд┐рдпрдВрддреНрд░рдг рдирд┐рдпрдореЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд░рдХреЗ рдкреИрдХреЗрдЯреЛрдВ рдХреЗ рд╡рд┐рддрд░рд┐рдд рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВред рдореЗрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ 802.3ad рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ 2 рдПрдирдЖрдИрд╕реА рдПрдХрддреНрд░рд┐рдд рд╣реИрдВред рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдПрдХрд▓ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред

рдиреЗрдЯрд╡рд░реНрдХ рдПрдбреЙрдкреНрдЯрд░ рдкрд░ рдЖрд░рдкреАрдПрд╕ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЕрдХреНрд╖рдо рд╣реИ:

for d in eth0 eth1; do
    find /sys/class/net/${d}/queues -name rps_cpus |
    while read f; do
            echo 0 | sudo tee ${f}
    done
done

рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡рд╛рд╣ рдирд┐рдпрдВрддреНрд░рдг рдирд┐рдпрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреИрдХреЗрдЯ рдПрдХ рд╣реА рд╕реАрдкреАрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:

DMAC=12:34:de:ad:ca:fe
sudo ethtool -N eth0 flow-type ether dst ${DMAC} action 2
sudo ethtool -N eth1 flow-type ether dst ${DMAC} action 2

рдЖрд░рдкреАрдПрд╕ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдФрд░ рдкреНрд░рд╡рд╛рд╣ рдирд┐рдпрдВрддреНрд░рдг рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реНрдордд рдореЗрдВ рд╕рднреА рдкреИрдХреЗрдЯ рдПрдХ рд╣реА рд╕реАрдкреАрдпреВ рдкрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реИрдВред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкреИрдХреЗрдЯ рдЙрд╕ рдХрддрд╛рд░ рдореЗрдВ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ рдЙрдиреНрд╣реЗрдВ рднреЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрдк ethq рдЬреИрд╕реА рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рддрдм рдЖрдк рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрддрд╛рд░ рдХрд┐рд╕ рд╕реАрдкреАрдпреВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рд╣реИ /proc/interruptsред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реАрдкреАрдпреВ 5 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯрд░реНрди 2 рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

Openssl рд╕реНрдкреАрдб рдХрдорд╛рдВрдб


рдореИрдВ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ perfрдпрд╛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╕реЙрдлреНрдЯрд┐рд░рдХреНрдпреВ рд░рдирдЯрд╛рдЗрдо рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ bpf, рд▓реЗрдХрд┐рди рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЕрд╡рд▓реЛрдХрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИред рдПрдХ рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╕рдорд╛рдзрд╛рди рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрдЪрд╛рд▓рди рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд▓реЛрдб рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдПрдХ рдЬреНрдЮрд╛рдд рд▓реЛрдб рдмрдирд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ openssl speedрдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдХрдорд╛рдВрдб рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдореЗрдВ рдХрд┐рддрдирд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдЙрди рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдорд╛рддреНрд░рд╛ рд╕реЗ рдХрд░реЗрдВ рдЬреЛ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВ (рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдХрд┐рддрдирд╛ рд╕рдВрд╕рд╛рдзрди рдЦрд░реНрдЪ рд╣реЛрддрд╛ рд╣реИ)ред

рдЯреАрдо openssl speedрд▓рдЧрднрдЧ 100% рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдЯреАрдо рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реАрдкреАрдпреВ рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди, рдЗрд╕рдХреЗ рд╕рднреА рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЯреАрдо рдЯрд╛рдЗрдорд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрдВрддрд░рд╛рд▓ рдкрд░ рд╕реЗрдЯ рдХрд░рдХреЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ (рдпрд╣рд╛рдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧрдгрдирд╛ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ 10 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВ), рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдлрд┐рд░, рдЬрдм рдЯрд╛рдЗрдорд░ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ times()рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХрд┐рддрдирд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп рдорд┐рд▓рд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ syscallрдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

alarm(10)                               = 0
times({tms_utime=0, tms_stime=0, tms_cutime=0, tms_cstime=0}) = 1726601344
--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---
rt_sigaction(SIGALRM, ...) = 0
rt_sigreturn({mask=[]}) = 2782545353
times({tms_utime=1000, tms_stime=0, tms_cutime=0, tms_cstime=0}) = 1726602344

рдпрд╣реА рд╣реИ, рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ alarm()рдХреЙрд▓ рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдмрд╣реБрдд рдХрдо рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд┐рдП рдЧрдП рдереЗред рдпрджрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрд╛рдзрд┐рдд рдирд╣реАрдВ рд╣реБрдЖ рдерд╛, рдпрд╛ рдмрд╣реБрдд рдХрдо рдмрд╛рдзрд┐рдд рд╣реБрдЖ рдерд╛, рддреЛ рд╕рдордп tms_utimeрдкрд░реАрдХреНрд╖рдг рд╕рдордп (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, 10 рд╕реЗрдХрдВрдб) рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рдПрдЧрд╛ред

рдЪреВрдВрдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬреЛ рднреА рд╕рд┐рд╕реНрдЯрдо рд╕рдордп рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ, times()рдЙрд╕рдХрд╛ рдЕрд░реНрде рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рднрд╛рд░ рд╣реЛрдЧрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ opensslрдпрд╣ рд╕реАрдкреАрдпреВ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рд╕реАрдкреАрдпреВ рдЦреБрдж рдХреБрдЫ рдФрд░ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╕реНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреЗрдЯрд╡рд░реНрдХ рдкреИрдХреЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛:

alarm(10)                               = 0
times({tms_utime=0, tms_stime=0, tms_cutime=0, tms_cstime=0}) = 1726617896
--- SIGALRM {si_signo=SIGALRM, si_code=SI_KERNEL} ---
rt_sigaction(SIGALRM, ...) = 0
rt_sigreturn({mask=[]}) = 4079301579
times({tms_utime=178, tms_stime=571, tms_cutime=0, tms_cstime=0}) = 1726618896

рдпрд╣рд╛рдВ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ opensslрдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ 7.49 рд╕реЗрдХрдВрдб (0.01 рд╕реЗрдХрдВрдб рдХреЗ рдЕрдиреБрд░реВрдк рдорд╛рдк рдХреА рдЗрдХрд╛рдЗрдпреЛрдВ рдореЗрдВ 178 + 571) рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛ ред рд▓реЗрдХрд┐рди рдЙрд╕реА рд╕рдордп 5.71 рдПрд╕ред рдЗрд╕ рдЕрдВрддрд░рд╛рд▓ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдЯрд╛рдЗрдо рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╡рд╣ opensslрдХрд░реНрдиреЗрд▓ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╡реНрдпрд╡рд╕рд╛рдп рдореЗрдВ рд╡реНрдпрд╕реНрдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ 5.71 рдПрд╕ред - рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рднрд╛рд░ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдпрд╣реА рд╣реИ, рдпрд╣ рд╡рд╣ рд╕рдордп рд╣реИ рдЬрдм рд╕рд┐рд╕реНрдЯрдо рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ "рдЪреЛрд░реА" рдХреА рдЧрдИ рдереАред

рдиреЗрдЯрд╡рд░реНрдХ рддрдВрддреНрд░ рдХреА рд╡рдЬрд╣ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рд▓реЛрдб рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП coverssl рд╕реНрдкреАрдб рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдЕрдм рдЬрдм рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЯреАрдо рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ openssl speed, рддреЛ рд╣рдо рдЙрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ рдЬреЛ рдЗрд╕реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╕рд░реНрд╡рд░ рдкрд░ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ:

$ taskset -c 5 openssl speed -seconds 10 aes-256-cbc >/dev/null
Doing aes-256 cbc for 10s on 16 size blocks: 66675623 aes-256 cbc's in 9.99s
Doing aes-256 cbc for 10s on 64 size blocks: 18096647 aes-256 cbc's in 10.00s
Doing aes-256 cbc for 10s on 256 size blocks: 4607752 aes-256 cbc's in 10.00s
Doing aes-256 cbc for 10s on 1024 size blocks: 1162429 aes-256 cbc's in 10.00s
Doing aes-256 cbc for 10s on 8192 size blocks: 145251 aes-256 cbc's in 10.00s
Doing aes-256 cbc for 10s on 16384 size blocks: 72831 aes-256 cbc's in 10.00s

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХреЗ рдмреНрд▓реЙрдХ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 9.99 рд╕реЗ 10 рд╕реЗрдХрдВрдб рддрдХ рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рддрдВрддреНрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп рдирд╣реАрдВ рд▓реЗрддреЗ рд╣реИрдВред рдЕрдм, рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП netperf, рд╣рдо рджреЛ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЯреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рдХреЛ рд▓реЛрдб рдХрд░реЗрдВрдЧреЗред рдкрд░реАрдХреНрд╖рдг рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдБ:

$ taskset -c 5 openssl speed -seconds 10 aes-256-cbc >/dev/null
Doing aes-256 cbc for 10s on 16 size blocks: 12061658 aes-256 cbc's in 1.96s
Doing aes-256 cbc for 10s on 64 size blocks: 3457491 aes-256 cbc's in 2.10s
Doing aes-256 cbc for 10s on 256 size blocks: 893939 aes-256 cbc's in 2.01s
Doing aes-256 cbc for 10s on 1024 size blocks: 201756 aes-256 cbc's in 1.86s
Doing aes-256 cbc for 10s on 8192 size blocks: 25117 aes-256 cbc's in 1.78s
Doing aes-256 cbc for 10s on 16384 size blocks: 13859 aes-256 cbc's in 1.89s

рдкрд░рд┐рдгрд╛рдо рдПрдХ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╕рд░реНрд╡рд░ рдкрд░ рдкреНрд░рд╛рдкреНрдд рд▓реЛрдЧреЛрдВ рд╕реЗ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИрдВред рдпрд╣ рдЙрдореНрдореАрдж рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЛ 10 рд╕реЗрдХрдВрдб рдХреЗ рднреАрддрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди times()рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп 1.78 рд╕реЗ 2.1 рд╕реЗрдХрдВрдб рддрдХ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╢реЗрд╖ рд╕рдордп, 7.9 рд╕реЗ 8.22 рд╕реЗрдХрдВрдб рддрдХ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдерд╛, рдкреИрдХреЗрдЯ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╛ рддреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рдВрджрд░реНрдн opensslрдореЗрдВ ksoftirqdред

рдЖрдЗрдП рдПрдХ рдирдЬрд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ topрдХрд┐ рд▓реЙрдиреНрдЪ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рдЯреАрдо рдХреНрдпрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рджреЗрдЧреА openssl speedред

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND              P 
 8180 libvirt+  20   0 33.269g 1.649g 1.565g S 279.9  0.9  18:57.81 qemu-system-x86     75
 8374 root      20   0       0      0      0 R  99.4  0.0   2:57.97 vhost-8180          89
 1684 dahern    20   0   17112   4400   3892 R  73.6  0.0   0:09.91 openssl              5    
   38 root      20   0       0      0      0 R  26.2  0.0   0:31.86 ksoftirqd/5          5

рдпрд╣рд╛рдВ рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ opensslрд╕реАрдкреАрдпреВ 5 рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рд▓рдЧрднрдЧ 73% рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ ksoftirqdрд╢реЗрд╖ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ openssl, рдЗрддрдиреА рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреИрдХреЗрдЬреЛрдВ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордп рдХрд╛ рдХреЗрд╡рд▓ 18-21% рд▓рдЧрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдиреЗрдЯрд╡рд░реНрдХ рд▓реЛрдб рдХреЛ 1 рд╕реНрдЯреНрд░реАрдо рддрдХ рдХрдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ opensslрдпрд╣ рдорд╣рд╕реВрд╕ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ 99% рдЙрдкрднреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND              P
 8180 libvirt+  20   0 33.269g 1.722g 1.637g S 325.1  0.9 166:38.12 qemu-system-x86     29
44218 dahern    20   0   17112   4488   3996 R  99.2  0.0   0:28.55 openssl              5
 8374 root      20   0       0      0      0 R  64.7  0.0  60:40.50 vhost-8180          55
   38 root      20   0       0      0      0 S   1.0  0.0   4:51.98 ksoftirqd/5          5

рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ 10 рд╕реЗрдХрдВрдб рдореЗрдВ, рдХреЗрд╡рд▓ 4 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИ:

Doing aes-256 cbc for 10s on 16 size blocks: 26596388 aes-256 cbc's in 4.01s
Doing aes-256 cbc for 10s on 64 size blocks: 7137481 aes-256 cbc's in 4.14s
Doing aes-256 cbc for 10s on 256 size blocks: 1844565 aes-256 cbc's in 4.31s
Doing aes-256 cbc for 10s on 1024 size blocks: 472687 aes-256 cbc's in 4.28s
Doing aes-256 cbc for 10s on 8192 size blocks: 59001 aes-256 cbc's in 4.46s
Doing aes-256 cbc for 10s on 16384 size blocks: 28569 aes-256 cbc's in 4.16s

рдкрд╛рд░рдВрдкрд░рд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд┐рдЧрд░рд╛рдиреА рдЙрдкрдХрд░рдг рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рдЧрднрдЧ рд╕рднреА рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ CPU рдХреЗ 55-80% рд╕рдВрд╕рд╛рдзрди рдиреЗрдЯрд╡рд░реНрдХ рдкреИрдХреЗрдЯ рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдереНрд░реВрдкреБрдЯ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ (22 Gb / s рдкреНрд░рддрд┐ 25 Gb / s рд▓рд╛рдЗрди рд╕реЗ рдЕрдзрд┐рдХ), рд▓реЗрдХрд┐рди рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдЪрд▓ рд░рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдкрд░ рдЗрд╕рдХрд╛ рдЬрдмрд░рджрд╕реНрдд рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рддрд╛ рд╣реИред

рд╕рд╛рд░рд╛рдВрд╢


рдпрд╣рд╛рдВ рд╣рдордиреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреА рдЬрд╛рдВрдЪ рдХреА рдХрд┐ рдХреИрд╕реЗ рдкреИрдХреЗрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рддрдВрддреНрд░ рдПрдХ рд╕рд░рд▓ рдФрд░ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмреЗрдВрдЪрдорд╛рд░реНрдХ рд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдШрдбрд╝рд┐рдпреЛрдВ рдХреЛ "рдЪреЛрд░реА" рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рд░реНрд╡рд░ рдкрд░, рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдпреЗ рд╡рд░реНрдЪреБрдЕрд▓ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдореБрд▓реЗрдЯрд░ рдереНрд░реЗрдб, рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрдиреЛрдВ рдХреЗ vhost рдереНрд░реЗрдб рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдпреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЬрд┐рд╕ рдкрд░ рдЗрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рднрд╛рд╡ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрдЪрд╛рд▓рди рд╕реЗ рдЬреБрдбрд╝реЗ рд▓реЛрдб рдХреЗ рдЙрдирдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдкреНрд░рднрд╛рд╡ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ?


All Articles