2010-09-12 151 views
8

我每隔十分钟就会构建一个webkit(2百万行代码),以查看其中的更改输出,并且我的计算机上的webkit链接需要处理600-700在我的硬盘上有MB的目标文件。这需要大约1.5分钟。我想加快这个链接过程。加速链接速度/ linux上的快速链接

有没有任何机会,我可以告诉os只保留所有的目标文件在RAM(我有4 GB的RAM)。有没有其他的方法来加快链接?

任何想法或帮助表示赞赏!

这是一个命令,它需要1.5分钟,

http://pastebin.com/GtaggkSc

+0

您能否确认使用例如:顶部还是vmstat?数据应该放在缓存中,但链接器也需要一些时间来处理它 - 所以你可能会受到CPU的限制。 – 2010-09-16 13:03:47

+0

@Turbo J,我发现在我的处理器中,只有一个内核正在使用22-25%。 – SunnyShah 2010-09-16 14:48:27

回答

11

我使用tempfsgold linker解决了这个问题。

1)。 tmpfs:将包含所有目标文件的目录挂载为tmpfs。

2)。 gold linker:使用gold链接器可以使链接速度提高5-6倍,而tmpfs的优势将比普通链接提高7-8倍。在ubuntu上使用以下命令,您的普通链接器将被Gold Linker替换。

sudo apt-get install binutils-gold 

你可以找到一些链接错误使用黄金链接器,下面的线程是一个很好的帮助。

Replacing ld with gold - any experience?

2

尝试使用ramdisk

+5

或者,在现代Linux系统上,tmpfs通常更好。 – MarkR 2010-09-12 16:16:39

+1

我在一个虚拟磁盘上的VMWare映像中运行我的linux。用一个特殊的最低限度的linux配置来编译。这是非常非常困难的,否则确保任何东西都在RAM中。但这需要4GB以上,最低16GB。 – Lothar 2010-09-15 16:33:37

1

说实话我不知道我理解的问题,但会像ramfs是有用的,以您?

+0

感谢您的评论,我现在澄清我的问题。 – SunnyShah 2010-09-12 15:22:01

+0

好吧,看起来像使用ramfs(或者ramdisk作为建议的mmonem)对你来说是有用的,只要它们允许你创建足够大的“磁盘”(免责声明:我从来没有使用任何一个程序,听说过它们的用处)。将需要的对象文件复制到“磁盘”,并将链接器指向这些文件而不是硬盘上的文件。希望这可以帮助。 – 2010-09-12 15:52:31

+0

谢谢Matt,我正在检查您的解决方案。 – SunnyShah 2010-09-12 16:36:23

1

获取您的Linux机器的SSD磁盘。 如果写入性能仍然存在问题,请将输出路径配置为位于RAM磁盘中。

您是否测量了1.5分钟内有多少IO真正被绑定? Webkit太大意味着您可能会遇到内存缓存垃圾。你应该试着找出你有多少L1/L2缓存未命中。我会建议这是一个问题。 在这种情况下,您唯一的希望就是GCC团队中的某个人正在研究这个问题。顺便说一下:微软在极端链接器时代也有同样的问题。

+0

只看着你的粘贴垃圾箱。您应该真的尝试将单个.o文件捆绑到.lib中 - 这可能是一个问题。并尝试使用ReiserFS,它比其他文件系统更适合于小文件。 – Lothar 2010-09-16 16:55:42