{"push_id":1466321829,"size":1,"distinct_size":1,"ref":"refs/heads/staging","head":"35a183f3c5c1abda90053ab8fb4bef1510400c3c","before":"174d5583be73799ab2e0bfc82527c85e0a2eafdf","commits":[{"sha":"35a183f3c5c1abda90053ab8fb4bef1510400c3c","author":{"name":"Mark Johnston","email":"42dac8e24a8c3d3c326744e15c7d8a6de664eb80@isilon.com"},"message":"Add a per-CPU cache for exec argument buffers.\n\nWe cache up to one buffer per CPU. These buffers are large (260KB) so we\ndon't want to allocate a lot of them, and thus vmem is probably\noverkill. Rather than always allocating 16 of them, which is surely a\nwaste of KVA on smaller systems, we allocate 2*ncpu buffers. To ensure\nthat a thread can't end up sleeping forever in kmap_alloc_wait(), we\nneed to have at least ncpu+1 buffers; allocate 2*ncpu to be safe. This\nmeans that we allocate less memory than before on systems with < 8 CPUs.\n\nTodos:\n- Some image activators use the exec map to allocate small buffers. Add\n  a fixed number of pages to the map during init for this purpose.\n- Add stats to track cache effectiveness.\n- Maybe make exec_map_entries tunable again, but ensure that we can't go\n  below ncpu+1.\n- atomics need a lot of casts\n- multiple buffers per cpu?\n- use dpcpu?","distinct":true,"url":"https://api.github.com/repos/markjdb/freebsd-dev/commits/35a183f3c5c1abda90053ab8fb4bef1510400c3c"}]}
{"actor":{"display_login":"markjdb"}}