- 主题:进程A怎么把N个超大数据连续发给另一个进程B
程序A是我的,数据原本自我闭环,用Rust写的。程序B是另一家单位的,想要引出A的内部数据做它们自己的科学研究,用C开发。
数据是3路实时图像帧,分别是10000×10000、5000×5000、5000×5000灰度图,帧率不算低,三路加起来大概1200MB/s,用上压缩顶多能降到1000MB/s,远超以太网传输带宽。
我觉得共享内存是个好办法,但是会和B进程耦合,我怕它们时序接不住,进而影响我发送时序。
写入磁盘交互,由于文件是多个离散的,磁盘IO成为很大的瓶颈,用PCIE4.0的固态硬盘也会造成阻塞。
有什么其他好办法能够不通过共享内存,高效地把数据从A给到B,哪怕B接不到?
--
FROM 221.218.140.*
还是共享内存最好吧.
担心耦合或者阻塞什么的,可以你自己封装一个库供两边使用,负责读写共享内存,这
样读端处理不及时时丢弃也好等待也好都能自己控制,不影响你这边的工作
【 在 AlphaO 的大作中提到: 】
: 程序A是我的,数据原本自我闭环,用Rust写的。程序B是另一家单位的,想要引出A的内部数据做它们自己的科学研究,用C开发。
: 数据是3路实时图像帧,分别是10000×10000、5000×5000、5000×5000灰度图,帧率不算低,三路加起来大概1200MB/s,用上压缩顶多能降到1000MB/s,远超以太网传输带宽。
: 我觉得共享内存是个好办法,但是会和B进程耦合,我怕它们时序接不住,进而影响我发送时序。
: ...................
--
FROM 183.241.137.*
unix socket,就是文件socket,仔细研究一下,和共享内存差不多快。
windows不知道有没有这个文件socket。共享内存这个场景很靠谱的呀,需要你自己设计一下传输协议
【 在 AlphaO 的大作中提到: 】
: 程序A是我的,数据原本自我闭环,用Rust写的。程序B是另一家单位的,想要引出A的内部数据做它们自己的科学研究,用C开发。
: 数据是3路实时图像帧,分别是10000×10000、5000×5000、5000×5000灰度图,帧率不算低,三路加起来大概1200MB/s,用上压缩顶多能降到1000MB/s,远超以太网传输带宽。
: 我觉得共享内存是个好办法,但是会和B进程耦合,我怕它们时序接不住,进而影响我发送时序。
: ...................
--
FROM 116.237.158.*
你这个用zmq很合适。ipc 本地传输。
【 在 AlphaO 的大作中提到: 】
: 程序A是我的,数据原本自我闭环,用Rust写的。程序B是另一家单位的,想要引出A的内部数据做它们自己的科学研究,用C开发。
: 数据是3路实时图像帧,分别是10000×10000、5000×5000、5000×5000灰度图,帧率不算低,三路加起来大概1200MB/s,用上压缩顶多能降到1000MB/s,远超以太网传输带宽。
: 我觉得共享内存是个好办法,但是会和B进程耦合,我怕它们时序接不住,进而影响我发送时序。
: ...................
--
FROM 114.240.69.*
做程序员之前,至少你得好好读读书。但凡认真读过几本书,也没你这个疑问
【 在 AlphaO 的大作中提到: 】
: 程序A是我的,数据原本自我闭环,用Rust写的。程序B是另一家单位的,想要引出A的内部数据做它们自己的科学研究,用C开发。
:
: 数据是3路实时图像帧,分别是10000×10000、5000×5000、5000×5000灰度图,帧率不算低,三路加起来大概1200MB/s,用上压缩顶多能降到
: ..................
发自「今日水木 on 24129PN74C」
--
FROM 114.247.175.*
灰度图找个靠谱的算法肯定不止这点压缩率,然后udp直接发就好了,接是B的问题了
--
FROM 61.149.4.*
谢谢,这个主意很好,不瞒您说昨晚我也想到一块去了。A进程自身也维护一个有限发送队列,满了以后扔一帧发一帧,留给B进程正比于队列长度的图像帧生命周期,进一步与B进程解耦。
【 在 gameplayer 的大作中提到: 】
: 还是共享内存最好吧.
: 担心耦合或者阻塞什么的,可以你自己封装一个库供两边使用,负责读写共享内存,这
: 样读端处理不及时时丢弃也好等待也好都能自己控制,不影响你这边的工作
: ...................
--
FROM 123.127.159.*
这个确实是,接近于linux的共享内存实现,windows没这么方便,没有这种内存文件
【 在 RunningOn 的大作中提到: 】
: unix socket,就是文件socket,仔细研究一下,和共享内存差不多快。
: windows不知道有没有这个文件socket。共享内存这个场景很靠谱的呀,需要你自己设计一下传输协议
:
--
FROM 123.127.159.*
我没试过,这个zmq的ipc能达到这种带宽吗
【 在 chunhui 的大作中提到: 】
: 你这个用zmq很合适。ipc 本地传输。
--
FROM 123.127.159.*
有具体对问题的高见吗
【 在 redfoxzheng 的大作中提到: 】
: 做程序员之前,至少你得好好读读书。但凡认真读过几本书,也没你这个疑问
: 发自「今日水木 on 24129PN74C」
--
FROM 123.127.159.*