| 1 | <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>vfs_aio_pthread</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="refentry" title="vfs_aio_pthread"><a name="vfs_aio_pthread.8"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>vfs_aio_pthread — implement async I/O in Samba vfs using a pthread pool</p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="cmdsynopsis"><p><code class="literal">vfs objects = aio_pthread</code></p></div></div><div class="refsect1" title="DESCRIPTION"><a name="id266340"></a><h2>DESCRIPTION</h2><p>This VFS module is part of the
|
|---|
| 2 | <a class="citerefentry" href="samba.7.html"><span class="citerefentry"><span class="refentrytitle">samba</span>(7)</span></a> suite.</p><p>The <code class="literal">aio_pthread</code> VFS module enables asynchronous
|
|---|
| 3 | I/O for Samba on platforms which have the pthreads API available,
|
|---|
| 4 | without using the Posix AIO interface. Posix AIO can suffer from severe
|
|---|
| 5 | limitations. For example, on some Linux versions the
|
|---|
| 6 | real-time signals that it uses are broken under heavy load.
|
|---|
| 7 | Other systems only allow AIO when special kernel modules are
|
|---|
| 8 | loaded or only allow a certain system-wide amount of async
|
|---|
| 9 | requests being scheduled. Systems based on glibc (most Linux
|
|---|
| 10 | systems) only allow a single outstanding request per file
|
|---|
| 11 | descriptor which essentially makes Posix AIO useless on systems
|
|---|
| 12 | using the glibc implementation.</p><p>To work around all these limitations, the aio_pthread module
|
|---|
| 13 | was written. It uses a pthread pool instead of the
|
|---|
| 14 | internal Posix AIO interface to allow read and write calls
|
|---|
| 15 | to be process asynchronously. A pthread pool is created
|
|---|
| 16 | which expands dynamically by creating new threads as work is
|
|---|
| 17 | given to it to a maximum of 100 threads per smbd process.
|
|---|
| 18 | To change this limit see the "aio num threads" parameter
|
|---|
| 19 | below. New threads are not created if idle threads are
|
|---|
| 20 | available when a new read or write request is received,
|
|---|
| 21 | the new work is given to an existing idle thread. Threads
|
|---|
| 22 | terminate themselves if idle for one second.
|
|---|
| 23 | </p><p>
|
|---|
| 24 | Note that the smb.conf parameters <code class="literal">aio read size</code>
|
|---|
| 25 | and <code class="literal">aio write size</code> must also be set appropriately
|
|---|
| 26 | for this module to be active.
|
|---|
| 27 | </p><p>This module MUST be listed last in any module stack as
|
|---|
| 28 | the Samba VFS pread/pwrite interface is not thread-safe. This
|
|---|
| 29 | module makes direct pread and pwrite system calls and does
|
|---|
| 30 | NOT call the Samba VFS pread and pwrite interfaces.</p></div><div class="refsect1" title="EXAMPLES"><a name="id266856"></a><h2>EXAMPLES</h2><p>Straight forward use:</p><pre class="programlisting">
|
|---|
| 31 | <em class="parameter"><code>[cooldata]</code></em>
|
|---|
| 32 | <a class="link" href="smb.conf.5.html#PATH" target="_top">path = /data/ice</a>
|
|---|
| 33 | <a class="link" href="smb.conf.5.html#AIOREADSIZE" target="_top">aio read size = 1024</a>
|
|---|
| 34 | <a class="link" href="smb.conf.5.html#AIOWRITESIZE" target="_top">aio write size = 1024</a>
|
|---|
| 35 | <a class="link" href="smb.conf.5.html#VFSOBJECTS" target="_top">vfs objects = aio_pthread</a>
|
|---|
| 36 | </pre></div><div class="refsect1" title="OPTIONS"><a name="id265817"></a><h2>OPTIONS</h2><div class="variablelist"><dl><dt><span class="term">aio_pthread:aio num threads = INTEGER</span></dt><dd><p>Limit the maximum number of threads per smbd that
|
|---|
| 37 | will be created in the thread pool to service IO requests.
|
|---|
| 38 | </p><p>By default this is set to 100.</p></dd></dl></div></div><div class="refsect1" title="VERSION"><a name="id265844"></a><h2>VERSION</h2><p>This man page is correct for version 3.6.3 of the Samba suite.
|
|---|
| 39 | </p></div><div class="refsect1" title="AUTHOR"><a name="id265854"></a><h2>AUTHOR</h2><p>The original Samba software and related utilities
|
|---|
| 40 | were created by Andrew Tridgell. Samba is now developed
|
|---|
| 41 | by the Samba Team as an Open Source project similar
|
|---|
| 42 | to the way the Linux kernel is developed.</p></div></div></body></html>
|
|---|