Trying to understand samba at OMV

  • I know this is outside the general purpose of this forum. I just want to learn. Thanks for the help.


    Checking my samba configuration. I find the following values in /etc/samba/smb.conf


    ...

    aio read size = 16384

    aio write size = 16384

    ...


    Looking at the samba.org manual I find this:


    ...

    The only reasonable values for this parameter are 0 (no asynchronous I / O) and 1 (it always performs asynchronous I / O)

    ...


    https://www.samba.org/samba/do…/man-html/smb.conf.5.html


    What is the meaning of the value 16384 in OMV?

    OMV 5, Intel core i3 3225, 8GB RAM, PendriveUSB system, ZFS RaidZ 5xWD Red 4TB, 1x120GB SSD Docker

    I DO NOT SPEAK ENGLISH. I translate with google, sorry if sometimes you don't understand me well:)

    Make a backup now. You don't want to miss it next week !!

  • size in bytes to use AIO ( or not to use if file size is less than value).

  • The samba manual says this:


    If this integer parameter is set to a non-zero value, Samba will read from files asynchronously when the request size is bigger than this value. Note that it happens only for non-chained and non-chaining reads and when not using write cache.

    The only reasonable values for this parameter are 0 (no async I/O) and 1 (always do async I/O).

    Related command: write cache size

    Related command: aio write size

    Default: aio read size = 1

    Example: aio read size = 0 # Always do reads synchronously


    So why does OMV want asynchronous operation after that value and not before? The logical thing is for the value to be 1 or 0, not 16384. In fact, the logical thing to do would be to configure it to achieve higher overall performance. Always asynchronous. aio read size = 1


    I know I'm looking under the hood. Sorry if I upset someone. I just want to learn because that screw is square...

    OMV 5, Intel core i3 3225, 8GB RAM, PendriveUSB system, ZFS RaidZ 5xWD Red 4TB, 1x120GB SSD Docker

    I DO NOT SPEAK ENGLISH. I translate with google, sorry if sometimes you don't understand me well:)

    Make a backup now. You don't want to miss it next week !!

  • The samba manual says this:


    If this integer parameter is set to a non-zero value, Samba will read from files asynchronously when the request size is bigger than this value.

    Please read this carefully, is exact what I say in my 2# post

  • Please read this carefully, is exact what I say in my 2# post

    Exactly. Setting this samba parameter in OMV results in files being read asynchronously when the request size is greater than 16384. If the request size is less than 16384 the read will not be asynchronous. This means that the other processes must wait for this one. The system stops until this process ends.

    The question is what is the point of stopping the other processes if the request size is less than 16384? If the parameter had the value 1, the reading would always be asynchronous. This behavior is optimal for better system performance. The manual already says it in its description:


    "The only reasonable values for this parameter are 0 (no async I/O) and 1 (always do async I/O)."


    So what is the reason for a value other than 0 or 1 in OMV? Why 16384? This does not make sense, unless there is some reason that I do not know.

    OMV 5, Intel core i3 3225, 8GB RAM, PendriveUSB system, ZFS RaidZ 5xWD Red 4TB, 1x120GB SSD Docker

    I DO NOT SPEAK ENGLISH. I translate with google, sorry if sometimes you don't understand me well:)

    Make a backup now. You don't want to miss it next week !!

  • I also wonder about this. But it seems to be no omv thing since the internet is full of „how to tune smb“ tips, telling you this setting. Unfortunately without any further explanation. I guess there are some pros and cons about async transfer and size of 16k hits some kind of a sweet spot here. If anyone knows the point, I‘d be happy to know.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!