ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/IO-AIO/README
(Generate patch)

Comparing IO-AIO/README (file contents):
Revision 1.10 by root, Wed Aug 17 05:26:20 2005 UTC vs.
Revision 1.11 by root, Sat Aug 20 00:32:42 2005 UTC

239 239
240 IO::AIO::poll_wait, IO::AIO::poll_cb 240 IO::AIO::poll_wait, IO::AIO::poll_cb
241 if IO::AIO::nreqs; 241 if IO::AIO::nreqs;
242 242
243 IO::AIO::min_parallel $nthreads 243 IO::AIO::min_parallel $nthreads
244 Set the minimum number of AIO threads to $nthreads. The default is 244 Set the minimum number of AIO threads to $nthreads. The current
245 1, which means a single asynchronous operation can be done at one 245 default is 4, which means four asynchronous operations can be done
246 time (the number of outstanding operations, however, is unlimited). 246 at one time (the number of outstanding operations, however, is
247 unlimited).
248
249 IO::AIO starts threads only on demand, when an AIO request is queued
250 and no free thread exists.
247 251
248 It is recommended to keep the number of threads low, as some Linux 252 It is recommended to keep the number of threads low, as some Linux
249 kernel versions will scale negatively with the number of threads 253 kernel versions will scale negatively with the number of threads
250 (higher parallelity => MUCH higher latency). With current Linux 2.6 254 (higher parallelity => MUCH higher latency). With current Linux 2.6
251 versions, 4-32 threads should be fine. 255 versions, 4-32 threads should be fine.
252 256
253 Under normal circumstances you don't need to call this function, as 257 Under most circumstances you don't need to call this function, as
254 this module automatically starts some threads (the exact number 258 the module selects a default that is suitable for low to moderate
255 might change, and is currently 4). 259 load.
256 260
257 IO::AIO::max_parallel $nthreads 261 IO::AIO::max_parallel $nthreads
258 Sets the maximum number of AIO threads to $nthreads. If more than 262 Sets the maximum number of AIO threads to $nthreads. If more than
259 the specified number of threads are currently running, kill them. 263 the specified number of threads are currently running, this function
260 This function blocks until the limit is reached. 264 kills them. This function blocks until the limit is reached.
265
266 While $nthreads are zero, aio requests get queued but not executed
267 until the number of threads has been increased again.
261 268
262 This module automatically runs "max_parallel 0" at program end, to 269 This module automatically runs "max_parallel 0" at program end, to
263 ensure that all threads are killed and that there are no outstanding 270 ensure that all threads are killed and that there are no outstanding
264 requests. 271 requests.
265 272
269 Sets the maximum number of outstanding requests to $nreqs. If you 276 Sets the maximum number of outstanding requests to $nreqs. If you
270 try to queue up more than this number of requests, the caller will 277 try to queue up more than this number of requests, the caller will
271 block until some requests have been handled. 278 block until some requests have been handled.
272 279
273 The default is very large, so normally there is no practical limit. 280 The default is very large, so normally there is no practical limit.
274 If you queue up many requests in a loop it it often improves speed 281 If you queue up many requests in a loop it often improves speed if
275 if you set this to a relatively low number, such as 100. 282 you set this to a relatively low number, such as 100.
276 283
277 Under normal circumstances you don't need to call this function. 284 Under normal circumstances you don't need to call this function.
278 285
279 FORK BEHAVIOUR 286 FORK BEHAVIOUR
280 Before the fork IO::AIO enters a quiescent state where no requests can 287 Before the fork, IO::AIO enters a quiescent state where no requests can
281 be added in other threads and no results will be processed. After the 288 be added in other threads and no results will be processed. After the
282 fork the parent simply leaves the quiescent state and continues 289 fork the parent simply leaves the quiescent state and continues
283 request/result processing, while the child clears the request/result 290 request/result processing, while the child clears the request/result
284 queue and starts the same number of threads as were in use by the 291 queue (so the requests started before the fork will only be handled in
285 parent. 292 the parent). Threats will be started on demand until the limit ste in
293 the parent process has been reached again.
286 294
287SEE ALSO 295SEE ALSO
288 Coro, Linux::AIO. 296 Coro, Linux::AIO.
289 297
290AUTHOR 298AUTHOR

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines