From: Francis Cianfrocca Date: 2007-05-15T01:32:41+09:00 Subject: Re: DRb connection error with more than 250+ DRb services ------=_Part_104693_1463194.1179160360932 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline On 5/14/07, Michal Suchanek wrote: > > Of course, the FDs are only to organize your IO. You can use TCP ans > the OS provided sockets, or you can use a single UDP socket and > maintain the connection state yourself. > > Similarly the FDs to open files give you organized access to space on > a disk drive, and you can always open the partition device and manage > the storage yourself. > > The throughput of the structured IO would be usually lower because the > OS does already some processing on the data to organize it neatly for > you. > > Limiting the number of FDs per process does not do much to protect the > kernel memory. Maybe a single process cannot exhaust it but forking > more processes is easy. It is only a workaround for the poor design > after all. I really should let this go because it has nothing much to do with Ruby, but I don't agree that the Unix IO-access design is a poor one. User programs should never be accessing raw devices for any reason. It's absolutely not the case that direct access to raw devices gives you better "performance," especially considering how much work is being done by well-optimized device drivers, and also balanced against the damage you can do by accessing them yourself. And the design has stood the test of time, having proved its ability to easily accommodate a wide range of real devices and pseudo-devices over the years. And Windows even copied the design of the system calls (even though the underlying implementation appears to be quite different, except of course for Windows' TCP, which was stolen from BSD). ------=_Part_104693_1463194.1179160360932--