![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
The Question is: Threads Vs Asynchronous I/O, performance throughput In Butenhofs book, Programming with POSIX Threads ... the author (who i believe was heavily responsible for Pthreads on OpenVMS + TRU64), writes ... >> Asynchronous I/O does have one advantage over threaded concurrency, >> though. Just as a thread is "usually" cheaper (in execution time and >> storage space) than a process, the context required for an Asynchronous >> I/O is almost always cheaper than a thread. If you plan to have a lot >> of Asynchronous I/O operations active at the same time, that might be >> important enough to justify using the more complex programming model. Q1) - By enlarge, do/does the wizard(s) agree with the above statement in respect of VMS ? Q2) - Has anyone at ComPaq performed testing comparing the Threaded Vs Asynchronous I/O models. Based upon Butenhofs statement, it seems the best approach is to combine both Asynchronous I/O + Threads. Agreed, this is more complex, you are limited in what you can do within the AST (limited use of Pthreads from an AST) but thats fine, get in, enqueue ptr to data to main, issue new i/o, and get out. The main line code can then decide where to route the request for processing, a thread, or external process. Indeed for what i have in mind, an i/o intensive server (1000+ connections) where the received request usually results in a cpu instensive operation, being handled internally by a thread (one per cpu), or the request being handed off to another external process, this methodology (although somewhat complex) seems a fairly intuitive way of keeping the cpu's busy doing useful work. Since a collegue disagrees with this methodology on the grounds of performance / throughput, and we do not have the luxury of writing multiple servers to compare the performance differences ... Q3) - How you any comment in respect of the above model, is it fately flawed, have i missed something ? merci -Pierre The Answer is : As for the quote -- as written, yes, that is entirely correct. Now as for whether or not that correctness really matters here... The OpenVMS Wizard does not believe you can or will receive an answer more specific than "it depends" -- it depends on the particular target system, growth, and headroom, on the amount of effort you are willing to expend for programming and debugging, on the number of systems you plan on using, on requirements for clustering, and on various other factors. Threads, ASTs, and local or distributed processes are all potential approaches to solving this -- each has various advantages and disadvantages, rather obviously. Also please see topic (6099) for some details of threads-related programming.
|