目前正致力于Xilinx臂式开发平台。使用linux和C.
我映射了一些页面。例如## Convenience function
get_hist <- function(p) {
d <- ggplot_build(p)$data[[1]]
data.frame(x = d$x, xmin = d$xmin, xmax = d$xmax, y = d$y)
}
# make a dataframe for ggplot
set.seed(1)
x = runif(100, 0, 10)
y = cumsum(x)
df <- data.frame(x = sort(x), y = y)
# make geom_histogram
p <- ggplot(data = df, aes(x = x)) +
geom_histogram(aes(y = cumsum(..count..)), binwidth = 1, boundary = 0,
color = "black", fill = "white")
。我想知道哪些页面是最近最少使用的,所以我可以将它们复制到其他地方。
答案 0 :(得分:2)
Linux内核本身会跟踪LRU页面,例如,找出要交换或不换出内存争用的页面。
如果要在库中使用LRU标志,可以从用户空间读取LRU标志:
现在您有几个标志,您可以将它们用于您的逻辑:
3. UPTODATE page has up-to-date data
ie. for file backed page: (in-memory data revision >= on-disk one)
4. DIRTY page has been written to, hence contains new data
ie. for file backed page: (in-memory data revision > on-disk one)
8. WRITEBACK page is being synced to disk
[LRU related page flags]
5. LRU page is in one of the LRU lists
6. ACTIVE page is in the active LRU list
18. UNEVICTABLE page is in the unevictable (non-)LRU list
It is somehow pinned and not a candidate for LRU page reclaims,
eg. ramfs pages, shmctl(SHM_LOCK) and mlock() memory segments
2. REFERENCED page has been referenced since last LRU list enqueue/requeue
9. RECLAIM page will be reclaimed soon after its pageout IO completed
11. MMAP a memory mapped page
12. ANON a memory mapped page that is not part of a file
13. SWAPCACHE page is mapped to swap space, ie. has an associated swap entry
14. SWAPBACKED page is backed by swap/RAM
中描述了更多标志
还有一个名为soft-dirty
的功能,专门用于跟踪最近的写入(忽略读取)(请参阅Soft Dirty文档)。您可以通过/ proc清除软脏标志,并通过/ proc / pid / pagemap再次读取它们。也许这对你的应用来说也很方便。
答案 1 :(得分:0)
您是否考虑过使用 vmstat(8) Report virtual memory statistics ?
vmstat报告有关进程,内存, 分页 ,阻止IO,陷阱和cpu活动的信息。 (强调我的)。
包括:
平板模式的字段描述
cache:Cache name num:当前活动对象的总数:Total 可用对象数量大小:每个对象页面的大小:数量 具有至少一个活动对象totpages的页面:总数 已分配的页面pslab:每个slab的页数
以下是 Linux Journal article ,详细介绍了vmstat
如何用于监控操作系统统计信息。这是一段摘录:
使用vmstat
vmstat,顾名思义,报告虚拟内存统计信息。它 显示有多少虚拟内存,多少是免费和分页 活动。最重要的是,您可以观察页面输入和页面输出 他们发生了。这非常有用。
要监控系统上的虚拟内存活动,最好 使用vmstat延迟。延迟是指之间的秒数 更新。如果您没有提供延迟,vmstat会报告平均值 自上次启动并退出。建议延迟五秒钟 间隔。
要以五秒延迟运行vmstat,请键入:
vmstat 5