andriygapon:avgzfsproblemlist

This is an old revision of the document!


List of interesting issues with ZFS (in no particular order)

Priorities of ZFS worker threads

Compression/decompression/etc potentially takes a lot of CPU.

See a complaint here: http://thread.gmane.org/gmane.os.freebsd.stable/85097/focus=85100

One quick fix is to use PUSER priority as done in GELI driver. More investigation is needed.

Memory allocations in ARC

Low memory conditions result in ZFS ARC deadlocks.

There are some memory allocations in ARC that are done while holding some locks. Buffer hash lock is the worst offender. Given the structure of the code (e.g. sometimes lock acquisition and memory allocation are couple of functions apart) it is quite hard to move all allocations outside of the lock scope.

Some possible remedies (but no real cure yet):

  • arc_lowmem hook should never block
  • arc_evict_needed should check for KVA shortage even on amd64
Separate KVA submap for ZFS allocations

ZFS usage patterns fragment KVA a lot. It seems to make sense to use a dedicated submap for ZFS buffer allocations. The submap should be sized based on maximum ARC size. To be determined if only data buffers should be allocated from the submap or all of the buffers.

This requires extending UMA API.

  • andriygapon/avgzfsproblemlist.1360488330.txt.gz
  • Last modified: 2013/02/10 09:25
  • by AndriyGapon