我所知道的唯一相关程序是pmap,但这只打印了一个进程的内存.
我想看看物理内存是如何被占用的,以及整个物理RAM的进程/库(包括内核)(与进程'POV pmap)相比.
理想情况下还有图形界面.
你知道有没有这样的工具?
我知道图书馆引入的歧义.如果是这种情况,它可以显示1像素宽的线和箭头到该库的实际位置.
我需要什么呢?查看RAM碎片.
我们假设为典型的服务器 - 客户端程序创建了一个Unix域套接字.客户端在套接字上发送10GB缓冲区,同时由服务器使用.
操作系统(Linux/BSD)将10GB缓冲区分成多个数据包并发送/使用它们,还是一次性发送?
如果不能一次发送10GB的域套接字缓冲区,那么单个数据包的实际大小限制是多少?
约束:
KMALLOC仅在页面大小内存中分配,还是可以分配更少?kmalloc可以分配的大小是多少?我在哪里可以找到它的描述,因为我看到它并没有真正说明它分配了多少内存?我想知道的是KMALLOC分配的实际大小是多少.它是否分配2的功率大小?它只是从缓存中找到准备好的自由对象吗?
Hy,我想知道是否有任何可能找出除实验之外的SEQPACKET的最大长度(a-la为(i = 0; i <100 ... 00; i ++)send(...))).
而且,第二个问题:
如果我收到errno == EMSGSIZE尝试发送AF_UNIX SEQPACKET,是否保证它是因为最大邮件大小,或者可能还有其他一些原因?
对不起我的英语不好.
在 UNIX 进程之间交换中等大量数据(数兆字节,但不是千兆字节)的最佳方法是什么?
我认为,这将是内存映射文件,因为大小限制似乎足够可以忍受。
我需要双向通信,所以普通管道没有帮助。据我所知,套接字和 UDP 存在大小限制(另请参阅此处)。不确定 TCP 是否是在 . 的子进程和父进程之间进行通信的好主意fork()。
阅读诸如此类的相关问题,有些人推荐了共享内存/ mmap,其他人推荐了套接字。
还有什么我应该调查的吗?例如,是否有一些更高级别的库可以通过提供数据的 XML 序列化/反序列化来帮助 IPC?
根据评论进行编辑:
在我的特殊情况下,有一个父/控制器进程和几个子进程(不能使用线程)。控制器根据要求向儿童提供一些可能适合一个 UDP 数据包的关键数据。孩子们对按键数据进行操作,并向控制器提供基于按键的信息(信息大小可以是10-100MB)。
问题:响应数据的大小、通知父级有关密钥请求的机制、同步 - 父级在传递给子级后必须从其列表中删除密钥,不应发生重复的密钥处理。
Boost 和其他第三方库(不幸的是)不得使用。我也许可以使用SunOS 5.10系统提供的库。