Deutsch   English   Français   Italiano  
<lqaq6cF8btnU3@mid.individual.net>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!2.eu.feeder.erje.net!feeder.erje.net!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From: vallor <vallor@cultnix.org>
Newsgroups: comp.os.linux.misc
Subject: Named pipes vs. Unix sockets (was: Re: Are We Back to the "Wars" Now
 ?)
Date: 22 Nov 2024 07:29:16 GMT
Lines: 94
Message-ID: <lqaq6cF8btnU3@mid.individual.net>
References: <Sp-cnSz8UupYQaf6nZ2dnZfqnPednZ2d@earthlink.com>
	<vhf5ts$16rpr$1@dont-email.me> <vhfjtj$19ijm$1@dont-email.me>
	<vhja6j$23f5e$4@dont-email.me> <vhmm4c$hnbj$1@dont-email.me>
	<vhmn2t$hv8i$3@dont-email.me> <vhnikj$me7m$1@dont-email.me>
	<wwvcyio8m9p.fsf@LkoBDZeT.terraraq.uk> <vhorrb$t48o$1@dont-email.me>
	<vhosra$1171f$1@dont-email.me> <lqalg1F7fi9U2@mid.individual.net>
	<vhp8qi$12m83$2@dont-email.me> <lqaoknF8btnU2@mid.individual.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Trace: individual.net nAROyAMGMXbKdUvzYuutegv9NPZ/UjevlA2YMklZ3SCVEeLUxB
Cancel-Lock: sha1:Y+5353eyPmx6tN2qOpDUS/mtq6g= sha256:mnLPL0qM0KAMblMti2FqoUa0oHVw4lwe8x2wpu37RHE=
X-Face: +McU)#<-H?9lTb(Th!zR`EpVrp<0)1p5CmPu.kOscy8LRp_\u`:tW;dxPo./(fCl
 CaKku`)]}.V/"6rISCIDP`
User-Agent: Pan/0.161 (Hmm2; be402cc9; Linux-6.12.0)
Bytes: 4325

On 22 Nov 2024 07:02:47 GMT, vallor <vallor@cultnix.org> wrote in
<lqaoknF8btnU2@mid.individual.net>:

> On Fri, 22 Nov 2024 06:37:06 -0000 (UTC), Lawrence D'Oliveiro
> <ldo@nz.invalid> wrote in <vhp8qi$12m83$2@dont-email.me>:
> 
>> On 22 Nov 2024 06:09:05 GMT, vallor wrote:
>> 
>>> Doesn't the named pipe connection work through the filesystem code? 
That
>>> could add overhead.
>> 
>> No. The only thing that exists in the filesystem is the “special file” 
>> entry in the directory. Opening that triggers special-case processing 
in 
>> the kernel that creates the usual pipe buffering/synchronization 
>> structures (or links up with existing structures created by some prior 
>> opening of the same special file, perhaps by a different process), not 
>> dependent on any filesystem.
>> 
>> I just tried creating a C program to do speed tests on data transfers 
>> through pipes and socket pairs between processes. I am currently 
setting 
>> the counter to 10 gigabytes, and transferring that amount of data 
(using 
>> whichever mechanism) only takes a couple of seconds on my system.
>> 
>> So the idea that pipes are somehow not suited to large data transfers 
is 
>> patently nonsense.
>> 
>>> Can't use named pipes on just any filesystem -- won't work on NFS for
>>> example, unless I'm mistaken.
>> 
>> Hard to believe NFS could stuff that up, but there you go ...
> 
> Just tested NFS, and named pipes work there.
> 
> $ time -p ( dd if=/dev/zero of=test count=$[1024*1024] ) & cat test > /
dev/null
> [1] 38859
> 1048576+0 records in
> 1048576+0 records out
> 536870912 bytes (537 MB, 512 MiB) copied, 0.918945 s, 584 MB/s
> real 0.92
> user 0.16
> sys 0.76
> 
> NFS vers 4.1.

$ nc -l -U -N /tmp/socket > /dev/null & time -p ( dd if=/dev/zero 
count=$[1024*1024*2] | nc -U -N /tmp/socket )
[1] 40284
2097152+0 records in
2097152+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.03617 s, 527 MB/s
real 2.03
user 0.47
sys 3.60
[1]+  Done                    nc -l -U -N /tmp/socket > /dev/null

However, the speed appears to be limited by dd in my examples -- setting a 
block size to fill the pipe/packets seems to increase throughput:

$ nc -l -U -N /tmp/socket > /dev/null & time -p ( dd if=/dev/zero 
count=$[1024*1024*4] bs=1024 | nc -U -N /tmp/socket > /dev/null )
[1] 41764
4194304+0 records in
4194304+0 records out
4294967296 bytes (4.3 GB, 4.0 GiB) copied, 4.02026 s, 1.1 GB/s
real 4.02
user 0.89
sys 7.11

$ time -p ( dd if=/dev/zero of=test count=$[1024*1024*4] bs=$[8*512]) & 
cat test > /dev/null
[1] 41282
4194304+0 records in
4194304+0 records out
17179869184 bytes (17 GB, 16 GiB) copied, 4.43357 s, 3.9 GB/s
real 4.43
user 0.54
sys 3.88

$ ulimit -p
8
(pipesize in 512-byte blocks)

(Now I'm off to find out the MTU for Unix sockets...)

-- 
-v System76 Thelio Mega v1.1 x86_64 NVIDIA RTX 3090 Ti
   OS: Linux 6.12.0 Release: Mint 21.3 Mem: 258G
   ""This is a job for.. AACK! WAAUGHHH!! ...someone else." - Calvin"