1.aborts 介绍
该命令会显示系统当前内存访问异常、 内存分配错误、 分配物理页错误和页面映射错误次数。
2.命令参数
aborts没有命令参数,执行效果如下:
[root@sylixos:/root]# aborts
vmm abort statistics infomation show >>
vmm abort (memory access error) counter : 0
vmm page fail (alloc success) counter : 0
vmm alloc physical page error counter : 0
vmm page map error counter : 0
3.技术实现
aborts命令通过libsylixos\SylixOS\shell\ttinyShell\ttinyShellSysCmd.c中的,__tshellSysCmdInit函数将其加入到系统shell命令中,可以通过LW_CFG_VMM_EN进行使能或者关闭。
aborts的实现函数是调用__tshellSysCmdAborts,最终通过调用API_VmmAbortShow进行信息显示,代码如下所示。
VOID API_VmmAbortShow (VOID)
{
LW_VMM_STATUS vmms;
API_VmmAbortStatus(&vmms);
printf("vmm abort statistics infomation show >>\n");
printf("vmm abort (memory access error) counter : %lld\n", vmms.VMMS_i64AbortCounter);
printf("vmm page fail (alloc success) counter : %lld\n", vmms.VMMS_i64PageFailCounter);
printf("vmm alloc physical page error counter : %lld\n", vmms.VMMS_i64PageLackCounter);
printf("vmm page map error counter : %lld\n", vmms.VMMS_i64MapErrCounter);
printf("\n");
}
API_VmmAbortStatus函数主要就是将vmm当前的统计状态进行显示,它是通过全局变量_K_vmmStatus进行记录,在文件libsylixos\SylixOS\kernel\vmm\vmmAbort.c中定义。
/*********************************************************************************************************
统计变量
*********************************************************************************************************/
static LW_VMM_STATUS _K_vmmStatus;
_K_vmmStatus通过不通的变量记录了系统启动到当前发生的所有关于vmm的错误和状态。
/*********************************************************************************************************
vmm 当前状态
*********************************************************************************************************/
typedef struct __lw_vmm_status {
INT64 VMMS_i64AbortCounter; /* 异常中止次数 */
INT64 VMMS_i64PageFailCounter; /* 缺页中断正常处理次数 */
INT64 VMMS_i64PageLackCounter; /* 系统缺少物理页面次数 */
INT64 VMMS_i64MapErrCounter; /* 映射错误次数 */
INT64 VMMS_i64SwpCounter; /* 交换次数 */
INT64 VMMS_i64Reseve[8];
} LW_VMM_STATUS;
typedef LW_VMM_STATUS *PLW_VMM_STATUS;
4.命令测试
我们可以通过内存分配后,使用aborts查看一下相关的vmm状态信息。
[root@sylixos:/apps]# ./mem_test 1 1
Test: size 1 MB, sleep 1 s
Memory allocation sucessful, 1 MB
Test exit
[root@sylixos:/apps]#
[root@sylixos:/apps]#
[root@sylixos:/apps]# aborts
vmm abort statistics infomation show >>
vmm abort (memory access error) counter : 1
vmm page fail (alloc success) counter : 1
vmm alloc physical page error counter : 0
vmm page map error counter : 0
vmm相关知识可以参考后续的内存管理分析系列文章。


被折叠的 条评论
为什么被折叠?



