[Samba] understanding stat cache

Ulrich Sibiller
Wed, 15 Nov 2023 08:33:18 -0000

Hello Ralph,

Thanks for that hint about case sensitivity's performance penalty.

For clarifaction: The user is doing mainly reads, so does the "create"
you mention also cover opening/reading files? If only _creation_ of files is
suffering from that we probably have some other/further performance issue.

We have gpfs, which does not offer a case-insensitive mode, neither does the
vfs_gpfs module.

Uli


-----Urspr?ngliche Nachricht-----
Von: Ralph Boehme <slow at samba.org>
Gesendet: Montag, 13. November 2023 17:22
An: Ulrich Sibiller <ulrich.sibiller at atos.net>; samba at
lists.samba.org
Betreff: Re: [Samba] understanding stat cache

Hello Ulrich,

On 11/10/23 13:47, Ulrich Sibiller via samba wrote:
> We have a user that switched from Linux to Windows with his
> engineering software. Previously he was using NFS to access data and
> there were no performance complaints.
>
> Now, with Windows, the same procedures take minutes instead of
> seconds.

the classic workload where Samba performance sucks is when applications create
many files in directories. In Samba this involves scanning the parent directory
for every file as part of the case insensitive implementation on-top of a case
sensitive filesystem.

There are a few things that can be done here, eg man smb.conf

        default case = upper/lower
            controls what the default case is for new
            filenames (ie. files that don't currently exist
            in the filesystem). Default lower. IMPORTANT
            NOTE: As part of the optimizations for
            directories containing large numbers of files,
            the following special case applies. If the
            options case sensitive = yes, preserve case = No,
            and short preserve case = No are set, then the
            case of all incoming client filenames, not just
            new filenames, will be modified. See additional
            notes below.

Ideally you'd have a filesystem that is case insensitive (ext4 added support
recently) or a filesystem that is supported by Samba via a VFS hook to lookup
files.

> So I am wondering why the first two lookups always fail and/or
> obviously are never stored to the stat cache?  Is there a depth limit
> in the stat cache?

the name stat cache is a bit misleading, only caches filenames, not stat info.
It only helps if clients repeatedly access existing files with a wrong case.

-slow

--
SerNet Samba Team Lead          https://samba.plus/
Samba Team Member                https://samba.org/
SAMBA+ packages                 https://samba.plus/
Worldwide Samba Support, Consulting and Development