πΌοΈ 1 ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ πΌοΈ
π ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°. ΠΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠ΅ΡΡ Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·Π°Π½Π½ΡΡ Π±Π»ΠΎΠΊΠΎΠ², ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΡ Π»ΠΈΠ½ΠΈΡΠΌΠΈ. ΠΠ»ΠΎΠΊΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΎΡΠΌΡ ΠΈ ΡΠ²Π΅ΡΠ°. ΠΠ²Π΅ΡΡ Ρ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π΅ΡΡΡ Π»Π΅Π³Π΅Π½Π΄Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ° ΠΈ ΡΠΎΡΠΌΡ Π±Π»ΠΎΠΊΠ°.
π Π’Π΅ΠΊΡΡ Π½Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅
Kernel entry point
Function call
File at which function appears
Driver specific function
Data of type T
Data copying entries to or from I/O
Virtual copy
Efficient function through position 1
Thread scheduling levels up or down
Immediate thread
ΠΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½.
πΌοΈ 2 ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ πΌοΈ
π ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
Π‘Ρ Π΅ΠΌΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ°Ρ ΡΠΎΠ±ΠΎΠΉ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΌΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ. ΠΠ²Π΅ΡΡ Ρ ΡΡ Π΅ΠΌΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Ρ ΡΡΠΈ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎ. ΠΠΈΠΆΠ΅ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ ΡΠ΅ΡΡΡΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎ. Π ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΡ Π΅ΠΌΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π° Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ»ΠΎΡΠ°, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½Π°Ρ Π½Π° ΡΡΠΈ ΡΠ΅ΠΊΡΠΈΠΈ, Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. ΠΠ½ΡΡΡΠΈ ΠΏΠΎΠ»ΠΎΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ ΡΡΡΠ΅Π»ΠΊΠΈ, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠ΅ Π½Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ.
π Π’Π΅ΠΊΡΡ Π½Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅
RAM
PACKETS / SKB_BUFF
POINTER TO SKB_BUFF
NIC
rx/tx buffer ring
$ ethtool -g eth0
$ ethtool -G eth0 tx value tx value
qdisc
IN $ sysctl net.core.netdev_max_backlog
OUT $ ifconfig eth0 txqueuelen 10000
ALGO $ sysctl net.core.default_qdisc
RT
Bulky
Else
IP/TCP
send/rcv buffer
IN $ sysctl net.ipv4.tcp.rmem
OUT $ sysctl net.ipv4.tcp.wmem
Application
sk_buff DMA'ed by NIC
πΌοΈ 3 ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ πΌοΈ
π ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
Π‘Ρ Π΅ΠΌΠ°. ΠΠ° ΡΡ Π΅ΠΌΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΈΠ΅ΠΌΠ° Π΄Π°Π½Π½ΡΡ ΠΏΠΎ TCP/IP. Π‘Ρ Π΅ΠΌΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ² ΠΈ ΠΊΡΡΠ³ΠΎΠ², ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΡ ΡΡΡΠ΅Π»ΠΊΠ°ΠΌΠΈ. Π ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°Ρ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π° Π² ΠΊΡΡΠ³Π°Ρ - Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ»ΠΎΠ΅Π².
π Π’Π΅ΠΊΡΡ Π½Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅
Application
DATA
net.core.rmem_default
net.core.rmem_max
tcp_mem: min default max
tcp_mem: min pressure max
TCP Recv Buffer
TCP Process
tcp_wr_snd
TCP
DATA
IP Layer
ip_rcv()
IP
TCP
DATA
Kernel memory
Packet data
Interrupt Handler
net.core.default_qdisc
NIC
Link Layer
MAC
IP
TCP
DATA
Interrupt Generator
DMA
NIC Memory
Receive