主要观点:
- 用 Perl 监控 R 脚本中的峰值物理 DRAM 使用情况,包含大量 R 代码且自解释性强。
- 介绍 R 的内存管理及工具,如内置函数 Rprof 用于采样调用栈并记录到日志文件。
- 由于 Rprof 采样频率相对较低,需设法减慢代码以捕获峰值内存使用,如在 Linux 系统中使用 valgrid。
- 提供一个简单的 R 日志记录函数 bench_time_mem,可获取总时间、R 分配的内存和日志文件大小。
- Rprof 无法直接获取计算期间的峰值内存使用,只能获取栈中分配的总内存量。
- 提出通过融合 R 和 Perl 来获取峰值 DRAM 使用,即写 Perl 脚本探测 ps 命令获取 R 进程的驻留集大小(RSS)等。
关键信息:
- 有关于 R 内存管理的背景介绍及相关工具说明。
- 给出 R 代码示例 bench_time_mem 及其运行结果。
- 比较不同代码分配相同总内存时的情况及触发垃圾回收的时间代价。
- 引出后续将在[Part 2]中介绍获取峰值 DRAM 使用的方法。
重要细节:
- R 类似 Perl 可通过提供动态分配容器让程序员无需手动管理内存,且有垃圾回收机制。
- Rprof 采样存在间隔限制及可能导致的系统扰动和结果偏差。
- 在 Linux 系统中可使用 valgrid 减慢代码以捕获内存使用情况。
- bench_time_mem 函数先触发垃圾回收,创建临时文件并开始日志记录,执行 R 表达式后解析文件获取相关信息并返回。
- 示例代码中通过 busy_wait 函数模拟工作负载及内存分配和释放操作。
- 说明 Rprof 记录的总内存量与实际峰值内存使用的区别及示例代码对比。
- 展示触发垃圾回收的时间代价与直接分配随机数数组的时间差异。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。