我有一个应用程序,它定期(每 1 或 2 秒后)通过分叉来获取检查点。所以检查点是原始进程的一个分支,它只是保持空闲,直到当原始进程中发生某些错误时被要求启动。
现在我的问题是 fork 的写时复制机制的成本是多少。每当原始进程写入内存页面时(即在获取检查点之后的第一次),将发生页面错误陷阱的成本是多少,因为写时复制机制将确保它为原始进程提供与检查点不同的物理页面。
在我看来,当中断发生时,页面错误陷阱的开销可能非常高,我们从用户空间着陆到内核空间着陆,然后从内核回到用户空间。我可以从这样的页面错误陷阱中损失多少 CPU 周期。假设 RAM 足够大,我们不需要交换到硬盘。
好吧,我知道很难想象一个检查点方案比这更有效,因此你可以说我为什么担心页面陷阱错误开销,但我只是想知道这个方案的成本是多少.