# XATTR=SA effect on Samba4 Directory Browsing Performance



## ViktorK (Sep 5, 2014)

I've been experiencing slow directory browsing performance on an AD member server with 48GB RAM and a 12 disk zpool configured as 6 mirrored vdevs using NFSv4 ACLs and Samba 4.1.11. The problem appears to be related to extended attribute / permissions lookups on directories with large amounts of files / folders. You can dramatically increase performance by disabling certain permissions-related features of samba (i.e. disable 'store dos attributes' and 'ea support'), but these parameters are required for proper AD / windows integration.

I know that in ZoL you can dramatically improve performance of these lookups by setting xattr=sa, which stores xattrs that are smaller than 64KB in dnode_phys_t's bonus block. The OpenZFS website indicates that this ZFS feature may not be implemented (represented by "??"). For reference see here: http://open-zfs.org/wiki/Features#SA_based_xattrs

My questions are as follows:
1) Are SA based xattrs implemented in ZFS on FreeBSD?
2) If not are there any plans to implement them?
3) I'm leaning towards increasing ARC to 96GB and possibly adding an L2ARC device. Do you have any ideas on increasing performance via software config? (My pool is only 30% full, I've disabled atime, and have determined that my problem isn't network related (browsing is also slow through smbclient run locally on server).)

For reference

```
[global]
    server max protocol = SMB2_24
    ea support = yes
    store dos attributes = yes
    unix extensions = no
    acl allow execute always = true
    idmap config *:backend = tdb
    idmap config *:range = 90000000-100000000
    server role = member server
    netbios name = STORAGE
    workgroup = FOO
    realm = FOO.COM
    security = ADS
    client use spnego = yes
    acl check permissions = true
    acl map full control = true
    dos filemode = yes
    winbind cache time = 7200
    winbind offline logon = yes
    winbind enum users = yes
    winbind enum groups = yes
    winbind nested groups = yes
    winbind use default domain = yes
    winbind refresh tickets = yes
    idmap config FOO: backend = rid
    idmap config FOO: range = 20000-20000000
    allow trusted domains = no
    client ntlmv2 auth = yes
    dos charset = CP437
    unix charset = UTF-8
    log level = 1

[Sample_Share]
    path = /mnt/Tank/Sample_Share
    printable = no
    veto files = /.snap/.windows/.zfs/
    writeable = yes
    browseable = yes
    shadow:snapdir = .zfs/snapshot
    shadow:sort = desc
    shadow:localtime = yes
    shadow:format = auto-%Y%m%d.%H%M-2m
    vfs objects = shadow_copy2 zfsacl streams_xattr aio_pthread
    nfs4:mode = special
    nfs4:acedup = merge
    nfs4:chown = yes
    zfsacl:acesort = dontcare
```


```
FreeBSD STORAGE.FOO.COM 9.2-RELEASE-p10 FreeBSD 9.2-RELEASE-p10 #0
```
Any advice / information would be much appreciated as I am a bit of a newbie.


----------



## ViktorK (Sep 5, 2014)

To reply to my own question: 

SA based xattrs are a linux-only on-disk format extension. For more information see discussions on OpenZFS developer mailing list here: http://lists.open-zfs.org/pipermail/dev ... 00118.html

This means that I'm leaning more towards a hardware solution barring an obvious misconfiguration.


----------

