zfs listing and CPU

Eugene M. Zheganin emz at norma.perm.ru
Sun Aug 13 18:25:45 UTC 2017


On 13.08.2017 16:13, Tenzin Lhakhang wrote:
> You may want to have an async zfs-get program/script that regularly 
> does a zfs get -Ho and stores then in a local cache (redis or your own 
> program) at a set interval and then the api can hit the cache instead 
> of directly running get or list.
I cannot because the cache will become stale on first new entity 
creation, which happens all the time.

> - Some silly person will try to benchmark your zfs web-API and 
> overload your server with zfs processes.
> - Example: let me run [ ab -c 10 -n 10000 http://yourserver/zfs-api/list ]
> -- Let me run 10 concurrent connection with a total of 10k requests to 
> your api (it's a simple one liner -- people will be tempted to 
> benchmark like this).
>
> Example:
> https://github.com/tlhakhan/ideal-potato/blob/master/zdux/routers/zfs/service.js#L9
> - This is a JS example, but you can easily script it or another 
> language (golang) for cache separation and another program for the API.
>
> Also, zfs does have a -c property to get cached values -- these values 
> are stored in an internal zfs process cache. The -c doesn't help if 
> you have 1000(0)s of filesystems, a single list can still take 
> minutes.  Sending the list is also several megabytes.
Doesn't have on FreeBSD.


Thanks.
Eugene.


More information about the freebsd-fs mailing list