Messages in this thread | | | Subject | Re: [PATCH v14 01/13] sk_run_filter: add BPF_S_ANC_SECCOMP_LD_W | From | Eric Dumazet <> | Date | Tue, 13 Mar 2012 22:55:35 -0700 |
| |
Le mercredi 14 mars 2012 à 06:12 +0100, Indan Zupancic a écrit :
> Problem is that 'old_size' can be up to 32kB in size and it would be nice > if that memory could be released. If it isn't, then using JIT increases > memory usage, while also not accounting it to the socket. >
It is accounted for, since jit size is in relation with standard filter size. Check sock_kmalloc()
Fact we can have a litle underestimation was already the case without jit, since kmalloc() does a roundup to next power of two.
I dont think this discussion has anything to do with SECCOMP anyway.
These accounting dont need to be 100% precise, we only want a limit to prevent rogue users from using all kernel memory.
> > > > If it did, this kind of 'optimization' can actually be not good, because > > sizeof(*fp) is small enough (less than half cache line size) to trigger > > a possible false sharing issue. (other part of the cache line could be > > used to hold a often dirtied object) > > It could avoid this by allocating at least a cache size. But this is a > problem for all small kmalloc's, isn't it?
Its a problem that was already met on several critical paths :
# find net|xargs grep -n L1_CACHE_BYTES net/core/dev_addr_lists.c:51: if (alloc_size < L1_CACHE_BYTES) net/core/dev_addr_lists.c:52: alloc_size = L1_CACHE_BYTES; net/core/net-sysfs.c:586: RPS_MAP_SIZE(cpumask_weight(mask)), L1_CACHE_BYTES), net/core/net-sysfs.c:1111: XPS_DEV_MAPS_SIZE, L1_CACHE_BYTES), GFP_KERNEL); net/ipv6/ip6_fib.c:1612: size = max_t(size_t, size, L1_CACHE_BYTES); net/ipv4/fib_frontend.c:1049: size = max_t(size_t, size, L1_CACHE_BYTES);
-- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |