vm_mem_policy 系统调用

用途

允许调用者获取或设置其应用程序的缺省内存放置策略。

标准 C 库 (libc.a)

语法

#include < sys/rset.h >

#include < sys/vminfo.h >

int vm_mem_policy (int 命令, int *厄吕勒鲁, int *政策, int num_policies)

描述

vm_mem_policy 系统调用允许调用者针对不同类型的内存获取或设置其应用程序的缺省内存放置策略。

以下是不同类型的布置策略:
描述
P_FIRST_TOUCH 将内存放置在应用程序首次引用它的 MCM 处。 这也可以通过将 内存亲缘关系 环境变量设置为 MCM ,并使已标识的主目录 MCM 运行的应用程序受益。
P_BALANCED 在所有系统的 MCM中使用应用程序中的分割区内存。 这对无法识别要在许多应用程序访问的全局内存对象上运行的主 MCM 或全局内存对象的应用程序有利。
缺省值 接受系统的缺省内存放置策略,该策略可以是第一次触摸或平衡策略,具体取决于情况和内存类型。

vm_mem_policy 系统调用允许调用者获取或设置 厄吕勒鲁 标志,这将在 P_FIRST_TOUCH 驱动的本地内存扫描 (运行应用程序的同一 MCM 上的内存) 未找到任何可用页面后立即触发系统以查找可窃用的页面。

参数 政策num_policies 允许调用程序对不同类型的内存的缺省内存布置策略进行精细控制。 策略设置将在应用程序调用此函数后创建的任何新内存页面上生效。 应用程序的现有内存页面将保留其现有内存放置。

参数

描述
cmd 这是 VM_SET_POLICYVM_GET_POLICY的命令。 VM_GET_POLICY 命令会将当前策略设置复制到调用者提供的缓冲区中,并且不会更改任何进程策略。 VM_SET_POLICY 命令从提供的缓冲区读取输入,并相应地更改进程策略。
厄吕勒鲁 一个指向整数的指针,该整数指示第一个触摸策略的 厄吕勒鲁 设置的状态。 启用 厄吕勒鲁 会导致内存被调出以满足第一次接触请求以进行内存放置。
厄吕勒鲁 的可能值为:
0
关闭 厄吕勒鲁
1
打开 厄吕勒鲁
-1
请勿修改 VM_SET_POLICY厄吕勒鲁 设置。
策略 一个指向单值类型内存的策略数组的指针。 每个数组元素都包含其中一种策略类型。 数组元素中包含 -1 表示保持相应内存类型的策略不变。 必须以长度为 VM_NUM_POLICIES的方式声明数组。 下面的列表枚举了其策略可以以常量形式更改的内存类型。 将作为数组下标的常量输入到相应内存类型的策略数组中。
VM_POLICY_TEXT
可执行程序文本的策略
vm_policy_stack
程序堆栈的策略
VM_POLICY_DATA
程序堆和专用 mmap 数据的策略
vm_policy_shm_named
通过 shm_open ()shmget () 使用密钥获取的共享内存的策略
vm_policy_shm_anon
使用 IPC_Private 键通过 shmget () 获取的匿名 mmap 内存或共享内存的策略
vm_policy_mapped_file
通过 shmat ()mmap () 映射到地址空间的文件的策略
vm_policy_unmapped_file
未映射的打开文件的策略
政策数 策略数组中的元素数。 此值必须设置为 VM_NUM_POLICIES