Linux共享内存IPC

overview

  • Linux\Unix IPC进程通信实例分析(一):共享内存通信—文件映射mmap方式 https://blog.youkuaiyun.com/lzx_bupt/article/details/7658371
  • Linux 进程间通信(IPC)之共享内存详解与测试用例 https://blog.youkuaiyun.com/a1414345/article/details/69389647
  • mmap 与 shm的区别 https://blog.youkuaiyun.com/hj605635529/article/details/73163513
  • 共享内存(上)https://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index1.html
  • 共享内存(下) https://www.ibm.com/developerworks/cn/linux/l-ipc/part5/index2.html

shared memory

shared memory VS domain socket

It's more a question of design, than speed (Shared Memory is faster), domain sockets are definitively more UNIX-style, and do a lot less problems. In terms of choice know beforehand:

Domain Sockets advantages

blocking and non-blocking mode and switching between them
you don't have to free them when tasks are completed
Domain sockets disadvantages

must read and write in a linear fashion
Shared Memory advantages

non-linear storage
will never block
multiple programs can access it
Shared Memory disadvantages

need locking implementation
need manual freeing, even if unused by any program
ref
  • https://www.cnblogs.com/ryanyangcs/p/12835482.html

compare

doc: https://stackoverflow.com/questions/1235958/ipc-performance-named-pipe-vs-socket

Results are get with IPC benchmarking:

System: Linux (Linux ubuntu 4.4.0 x86_64 i7-6700K 4.00GHz)
Message: 128 bytes
Messages count: 1000000


Pipe benchmark:
Message size:       128
Message count:      1000000
Total duration:     27367.454 ms
Average duration:   27.319 us
Minimum duration:   5.888 us
Maximum duration:   15763.712 us
Standard deviation: 26.664 us
Message rate:       36539 msg/s

FIFOs (named pipes) benchmark:
Message size:       128
Message count:      1000000
Total duration:     38100.093 ms
Average duration:   38.025 us
Minimum duration:   6.656 us
Maximum duration:   27415.040 us
Standard deviation: 91.614 us
Message rate:       26246 msg/s

Message Queue benchmark:
Message size:       128
Message count:      1000000
Total duration:     14723.159 ms
Average duration:   14.675 us
Minimum duration:   3.840 us
Maximum duration:   17437.184 us
Standard deviation: 53.615 us
Message rate:       67920 msg/s

Shared Memory benchmark:
Message size:       128
Message count:      1000000
Total duration:     261.650 ms
Average duration:   0.238 us
Minimum duration:   0.000 us
Maximum duration:   10092.032 us
Standard deviation: 22.095 us
Message rate:       3821893 msg/s

TCP sockets benchmark:
Message size:       128
Message count:      1000000
Total duration:     44477.257 ms
Average duration:   44.391 us
Minimum duration:   11.520 us
Maximum duration:   15863.296 us
Standard deviation: 44.905 us
Message rate:       22483 msg/s

Unix domain sockets benchmark:
Message size:       128
Message count:      1000000
Total duration:     24579.846 ms
Average duration:   24.531 us
Minimum duration:   2.560 us
Maximum duration:   15932.928 us
Standard deviation: 37.854 us
Message rate:       40683 msg/s

ZeroMQ benchmark:
Message size:       128
Message count:      1000000
Total duration:     64872.327 ms
Average duration:   64.808 us
Minimum duration:   23.552 us
Maximum duration:   16443.392 us
Standard deviation: 133.483 us
Message rate:       15414 msg/s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值