UDP memory usage accounting: accounting unit and variable
Subsystems (4)
PATCH 2/3 UDP memory usage accounting: accounting unit and variable
This patch introduces global variable for UDP memory accounting. The unit is page.
Signed-off-by Satoshi Oshima <[email protected]>
Signed-off-by Hideo Aoki <[email protected]>
include/net/sock.h +7 -0
@@ -723,6 +723,13 @@ static inline int sk_stream_wmem_schedulsk_stream_mem_schedule (sk, size,0 ); } +#define SK_DATAGRAM_MEM_QUANTUM ((int)PAGE_SIZE) + +static inline int sk_datagram_pages (int amt) +{ +return DIV_ROUND_UP (amt,SK_DATAGRAM_MEM_QUANTUM ); +} +/* Used by processes to "lock" a socket state, so that * interrupts and bottom half handlers won't change it * from under us. It essentially blocks any incoming
include/net/udp.h +2 -0
@@ -65,6 +65,8 @@ extern rwlock_t udp_hash_lock;extern struct proto udp_prot; +extern atomic_t udp_memory_allocated; +struct sk_buff ;/*
net/ipv4/proc.c +2 -1
@@ -66,7 +66,8 @@ static int sockstat_seq_show(struct seq_fold_prot_inuse (&tcp_prot),atomic_read (&tcp_orphan_count), tcp_death_row.tw_count,atomic_read (&tcp_sockets_allocated), atomic_read(&tcp_memory_allocated)); -seq_printf (seq,"UDP: inuse %d\n" ,fold_prot_inuse (&udp_prot)); +seq_printf (seq,"UDP: inuse %d mem %d\n" ,fold_prot_inuse (&udp_prot), +atomic_read (&udp_memory_allocated));seq_printf (seq,"UDPLITE: inuse %d\n" ,fold_prot_inuse (&udplite_prot));seq_printf (seq,"RAW: inuse %d\n" ,fold_prot_inuse (&raw_prot)); seq_printf(seq, "FRAG: inuse %d memory %d\n", ip_frag_nqueues,
net/ipv4/udp.c +4 -0
@@ -113,6 +113,10 @@ DEFINE_SNMP_STAT(struct udp_mib, udp_stastruct hlist_head udp_hash[UDP_HTABLE_SIZE ];DEFINE_RWLOCK (udp_hash_lock); +atomic_t udp_memory_allocated; + +EXPORT_SYMBOL (udp_memory_allocated); +static int udp_port_rover;static inline int __udp_lib_lport_inuse (__u16 num,struct hlist_head udptable[])