1

我正在执行日志分析,我希望将其自动化,以便它每天运行并报告结果。分析在标准工作站、8 核、高达 32 GB 的可用 RAM 上运行。原型基于 GNU Grep (--mmap)、Sqlite(在 RAM 磁盘上)和 Bash(用于参数)。

一个问题是我需要多次浏览这些文件。如果我找到一个模式匹配,我会向上搜索相关的东西。这可能会变得递归,并且每次它重新读取千兆字节的数据。

C中是否有任何快速方法/ lib用于内存支持的分段多线程文件读/写?

当我查看“内存中”搜索(在加载的段内上下移动,或在必要时加载更多)时,我觉得这是一个非常普遍的要求。

4

1 回答 1

2

寻找Tim Bray 的 Wide Finder 项目。Sean O'Rourke 在 Perl 中提供了令人惊讶的简单和通用的解决方案。它将日志映射到内存中,然后分叉子进程进行搜索。事实上,您可以在每个子进程中访问整个日志文件,因此您可以在初始分区之间灵活地前进和后退,这使得它非常通用。您可以以相同的方式在 C 中执行此操作,但我建议先使用 Perl 来测试概念,如果您不满意,然后重写为 C。就我个人而言,我会从 Perl POC 转到 Erlang + C NIF,只是因为我的个人喜好。(WF 项目中的 Erlang 解决方案不使用 NIF。)

或者,如果你有很多钱可以负担得起splunk>,那就去吧。

于 2015-03-20T14:17:44.547 回答