Articles of pipe理员

页面错误陷阱的成本

我有一个应用程序定期(每1或2秒后)通过分叉自己的检查点。 所以检查点是原始进程的一个分支,它只是保持空闲,直到在原始进程中出现错误时要求启动。 现在我的问题是fork的copy-on-write机制是多么昂贵。 写入时复制机制将确保原始进程写入内存页面(在获得检查点之后的第一次)时,将发生的页面错误陷阱的成本是多less与检查点不同的物理页面。 在我看来,页面错误陷阱开销可能会相当高,因为中断发生时,我们从用户空间降落到内核空间,然后从内核回到用户空间。 我可以从这样的页面错误陷阱中损失多lessCPU周期。 假设RAM足够大,我们不需要交换到硬盘。 那么我知道,很难想象一个检查点计划比这更有效率,因此你可以说为什么我担心页面陷阱错误的开销,但我只是想知道这个计划将有多less成本。

有没有一种方法来提高Linuxpipe道的性能?

我试图使用64位CentOS 6pipe理从一个应用程序到另一个应用程序的极高速度的数据。我已经使用dd做了以下基准testing,发现pipe道阻碍了我,而不是我的程序中的algorithm。 我的目标是达到1.5 GB / s左右。 首先,没有pipe道: dd if=/dev/zero of=/dev/null bs=8M count=1000 1000+0 records in 1000+0 records out 8388608000 bytes (8.4 GB) copied, 0.41925 s, 20.0 GB/s 接下来,两个dd进程之间的pipe道: dd if=/dev/zero bs=8M count=1000 | dd of=/dev/null bs=8M 1000+0 records in 1000+0 records out 8388608000 bytes (8.4 GB) copied, 9.39205 s, 893 MB/s 我可以对内核做些什么调整吗?或者其他什么可以提高通过pipe道运行数据的性能? 我也尝试了命名pipe道,并得到了类似的结果。

为什么ulimit无法成功限制常驻记忆,以及如何?

我启动一个新的bash shell,并执行: ulimit -m 102400 ulimit -a " core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 20 file size (blocks, -f) unlimited pending signals (-i) 16382 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) 102400 open files (-n) 1024 pipe size (512 bytes, -p) 8 […]

检查密码上次更改的时间

如何检查密码最后一次更改的时间? 我想在Windows和Linux上都这样做,你能指导我一点,我该怎么做?

我应该将哪个Linux发行版用作Xen主机?

我订购了一个家庭办公室的服务器,我想用Xen分区。 我认为这样可以使事情保持清洁,更容易维护。 我将运行MySQL,PostgreSQL,Tomcat和我自己的代码。 什么免费提供的Linux发行有最好的Xen托pipe设施?

caddr_t有什么意义,什么时候使用?

有人可以告诉我: 什么是caddr_t ? 什么时候使用? 它与void*什么不同? 何时使用void*以及何时使用caddr_t ? 提前致谢。

fork-execpipe道redirect问题

有谁能告诉我这个代码有什么问题吗? 总之,它创buildinput和输出pipe道和fork–exec的sort程序。 父节点读取字典/usr/share/dict/words并将其写入到dup2() 'd的pipe道中,同样从中读取输出,并将其打印到terminal(标准父母的输出)。 或者至less,这就是应该发生的事情。 回溯表示父母挂在第130行的read() (标记为“XXX”注释)。 就好像sort没有意识到文件结束,但是closurespipeIn的写入结束应该“发出”这个信号,对吗? #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> int main(int argc, char** argv) { int pipeIn[2]; int pipeOut[2]; if ((pipe(pipeIn)) == -1) { perror("pipe"); exit(EXIT_FAILURE); } if ((pipe(pipeOut)) == -1) { perror("pipe"); exit(EXIT_FAILURE); } pid_t child = fork(); if […]

在bss和数据段中的整数variables大小

我正在使用一个testing程序来理解Linux 6.3上的C内存模型,内核版本是2.6.32-279.el6.x86_64。 首先我编译下面的代码, #include <stdio.h> int main(void) { static int i = 100; /* Initialized static variable stored in DS*/ return 0; } 在运行大小命令,我下面, [root@rachitjain jan14]# size a.out text data bss dec hex filename 1040 488 16 1544 608 a.out 然后,删除静态variables“我”的初始化后,我的代码变成, include <stdio.h> int main(void) { static int i ; return 0; } 上面编译后运行大小, [root@rachitjain […]

从Python中发现在Gnome / Linux / Ubuntu上哪个窗口是活动的?

有没有什么方法可以获得当前打开的所有窗口的列表,并从Python中查看顶部的窗口(即活动?)? 这是在Ubuntu Linux上使用GNOME。 wnck看起来可能会这样做,但是它非常缺乏文档。

如何分配页面大小alignment的内存?

我需要分配内存应该是页面大小alignment。 我需要将这个内存传递给一个计算所有数据块异或的ASM代码。 我需要用malloc()来做到这一点。