windows虚拟内存对硬盘的损伤怎么监控

404 Not Found
404 Not Found急需一个全面的内存监视器!!!!!!!_百度知道
急需一个全面的内存监视器!!!!!!!
如题有没有能找到写入地址 和写入的字节集以及整数型的内存监视器不要HOOK 要全面的能找到写入地址 和写入的内容字节集以及整数型的内存监视器举例:内存地址:??? 写入数据:???
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
  虚拟内存的全面解说绝对全面不知大家发现没有,在Windows2000(XP)目录下有一个名为pagefile.sys的系统文件(Windows98下为Win386.swp),它的大小经常自己发生变动,小的时候可能只有几十兆,大的时候则有数百兆,这种毫无规律的变化实在让很多人摸不着头脑。其实,pagefile.sys是Windows下的一个虚拟内存,它的作用与物理内存基本相似,但它是作为物理内存的“后备力量”而存在的,也就是说,只有在物理内存已经不够使用的时候,它才会发挥作用。  1,虚拟内存的产生  我们都知道,虽然在运行速度上硬盘不如内存,但在容量上内存是无法与硬盘相提并论的。当运行一个程序需要大量数据、占用大量内存时,内存就会被“塞满”,并将那些暂时不用的数据放到硬盘中,而这些数据所占的空间就是虚拟内存。现在我们也明白为什么pagefile.sys的大小会经常变化了。  内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽。为了解决这个问题,Windows中运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,当内存占用完时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。举一个例子来说,如果电脑只有128MB物理内存的话,当读取一个容量为200MB的文件时,就必须要用到比较大的虚拟内存,文件被内存读取之后就会先储存到虚拟内存,等待内存把文件全部储存到虚拟内存之后,跟着就会把虚拟内里储存的文件释放到原来的安装目录里了。下面,就让我们一起来看看如何对虚拟内存进行设置吧。  2,虚拟内存的设置  对于虚拟内存主要设置两点,即内存大小和分页位置,内存大小就是设置虚拟内存最小为多少和最大为多少;而分页位置则是设置虚拟内存应使用那个分区中的硬盘空间。对于内存大小的设置,如何得到最小值和最大值呢?你可以通过下面的方法获得:选择“开始→程序→附件→系统工具→系统监视器”(如果系统工具中没有,可以通过“添加/删除程序”中的Windows安装程序进行安装)打开系统监视器,然后选择“编辑→添加项目”,在“类型”项中选择“内存管理程序”,在右侧的列表选择“交换文件大小”。这样随着你的操作,会显示出交换文件值的波动情况,你可以把经常要使用到的程序打开,然后对它们进行使用,这时查看一下系统监视器中的表现值,由于用户每次使用电脑时的情况都不尽相同,因此,最好能够通过较长时间对交换文件进行监视来找出最符合您的交换文件的数值,这样才能保证系统性能稳定以及保持在最佳的状态。  找出最合适的范围值后,在设置虚拟内存时,用鼠标右键点击“我的电脑”,选择“属性”,弹出系统属性窗口,选择“性能”标签,点击下面“虚拟内存”按钮,弹出虚拟内存设置窗口,点击“用户自己指定虚拟内存设置”单选按钮,“硬盘”选较大剩余空间的分区,然后在“最小值”和“最大值”文本框中输入合适的范围值。如果您感觉使用系统监视器来获得最大和最小值有些麻烦的话,这里完全可以选择“让Windows管理虚拟内存设置”。  调整分页位置  Windows9x的虚拟内存分页位置,其实就是保存在C盘根目录下的一个虚拟内存文件(也称为交换文件)Win386.swp,它的存放位置可以是任何一个分区,如果系统盘C容量有限,我们可以把Win386.swp调到别的分区中,方法是在记事本中打开System.ini(C:Windows下)文件,在[386Enh]小节中,将“PagingDrive=C:WindowsWin386.swp”,改为其他分区的路径,如将交换文件放在D:中,则改为“PagingDrive=D:Win386.swp”,如没有上述语句可以直接键入即可。  而对于使用Windows2000和WindowsXP的,可以选择“控制面板→系统→高级→性能”中的“设置→高级→更改”,打开虚拟内存设置窗口,在驱动器[卷标]中默认选择的是系统所在的分区,如果想更改到其他分区中,首先要把原先的分区设置为无分页文件,然后再选择其他分区。  或者,WinXP一般要求物理内存在256M以上。如果你喜欢玩大型3D游戏,而内存(包括显存)又不够大,系统会经常提示说虚拟内存不够,系统会自动调整(虚拟内存设置为系统管理)。  如果你的硬盘空间够大,你也可以自己设置虚电脑常识参考资料1 电脑常识参考资料2 电脑常识参考资料3 电脑常识参考资料5
为您推荐:
其他类似问题
您可能关注的内容
监视器的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。404 Not Found
404 Not Found每天进步一点点
一、实验目的
熟悉Windows存储器管理中提供的各种机制和实现的请求调页和群集技术。
Windows提供给应用程序的内存方式具有统一的简明和保护性的特点。另外,用户不需要知道操作系统如何分配内存,只需要知道应用程序如何分配内存即可。
通过实验,了解Windows内存结构和虚拟内存的管理,学习如何在应用程序中管理内存,体会Windows应用程序使用内存的简单性。了解当前系统中内存的使用情况,包括系统地址空间的布局和物理内存的使用情况;可以显示某个进程的虚拟地址空间和工作集信息等。
二、实验内容
在Windows平台上设计一个内存监视器,能实时地显示当前系统中内存的使用情况,包括系统地址空间的布局,物理内存的使用情况;能实时显示某个进程的虚拟地址空间布局和工作集信息等。
相关的系统调用:
GetSystemInfo,VirtualQueryEx, VirtualAlloc, GetPerformanceInfo,
GlobalMemoryStatusEx…
三、实验环境
硬件环境(如图1所示):
软件环境(如图2所示):
四、实验原理
Windows2000/XP是32位的操作系统,在Windows下运行的每个应用程序都认为能独占4GB的虚拟地址空间。其中,低2GB为进程私有的地址空间,用来存放用于程序和DLL,高2GB为所有进程共享区,也就是操作系统占用区。事实上,很少有进程能够占用2GB的存储空间。Windows把每个进程的虚拟内存地址映射为物理内存地址。
物理内存指的是计算机配置的RAM,系统可以管理所有的物理内存。Windows通过分配RAM、页面文件或者两者中的空间,可以准确的知道应用程序所需要的内存。
五、程序设计与实现
1、理解程序中需要用到的系统函数和结构体
1.1 系统函数
(1)、获得当前系统的一些特征信息GetSystemInfo()函数
函数格式:VOID GetSystemInfo(LPSYSTEM_INFOlpSystemInfo);
参数:lpSystemInfo为指向SYSTEM_INFO()结构体的指针,该结构由此函数填充。
返回值:该函数没有返回值。
(2)、检查进程虚拟内存的当前信息VirtualQueryEx()函数
DWORD VirtualQueryEx(
HANDLE hProcess,
//进程句柄
LPCVOID lpAddress,
//指向要查询的页基地址指针
PMEMORY_BASIC_INFORMATION lpBuffer, //用以接收要查询的内存信息
//指向包含MEMORY_BASIC_INFORMATION结构的缓冲区指针
SIZE_TdwLength
//MEMORY_BASIC_INFORMATION结构的大小
返回值:如果函数调用成功,则返回写入结构lpBuffer的字节数。
(3)、在调用进程的虚拟地址空间保留或提交一部分页VirtualAlloc()函数
函数格式:
LPVOID VirtualAlloc(
LPVOID lpAddress,
//待分配区域的起始地址
SIZE_T dwSize,
//要分配或者保留的区域的大小
DWORDflAllocationType,
//定义分配区域的类型属性
DWORD flProtect
//指定分配区域保护属性
返回值:如果函数调用成功,返回值为所分配页面的基地址;如果函数失败,返回值为NULL。
(4)、获得当前系统的存储器使用情况GetPerformanceInfo()函数
函数格式:
BOOL WINAPI GetPerformanceInfo(
PPERFORMANCE_INFORMATIONpPerformanceInformation,
// pPerformanceInformation为指向PERFORMANCE_INFORMATION结构体的指针
//PERFORMANCE_INFORMATION结构体的大小
返回值:如果函数调用成功,返回值为TRUE,失败返回值为FALSE。
(5)、获取系统当前物理内存和虚拟内存的使用情况GlobalMemoryStatusEx()函数
函数格式:
BOOL WINAPI GlobalMemoryStatusEx(LPMEMORYSTATUSEXlpBuffer);
//lpBuffer为指向MEMORYSTATUSEX结构体的指针。
返回值:如果函数调用成功,返回非0,失败返回0.
(6)、将数字转换成字符串StrFormatByteSize()函数
函数格式:
LPTSTR StrFormatByteSize(
//要转变的数字值
//指向保存将数字转变为字符串的缓冲区指针
//缓冲区的容量
返回值:如果函数调用成功,则返回一字符串地址指针。
(7)、获取当前进程已加载模块的文件的完整路径GetModuleFileName()函数
函数格式:
DWORD WINAPI GetModuleFileName(
//模块句柄
lpFilename,
//存放文件路径名的字符缓冲区
//缓冲区的大小
返回值:如果函数调用成功,返回复制到lpFilename的实际字符数量,如果失败返回值为0。
(8)、去掉完整路径名的路径部分PathStripPath()函数
函数格式:
VOID PathStripPath(LPTSTR pszPath);
//参数为完整的路径名
返回值:无返回值。
(9)、……
1.2 结构体
(1)、SYSTEM_INFO结构定义如下:
typedef struct _SYSTEM_INFO
DWORD dwOemId;
WORD wProcessorA
dwPageS //内存页的大小
lpMinimumApplicationA //每个进程可用地址空间的最小内存地址
lpMaximumApplicationA //每个进程私有地址空间的最大内存地址
dwActiveProcessorM
//系统配备的CPU掩码
dwNumberOfP
//系统配备的CPU的数量
dwProcessorT
//系统配备的CPU的类型,向下兼容用
dwAllocationG
//能够保留地址空间区域的最小单位
wProcessorL //CPU的级别
wProcessorR
//步进级别
}SYSTEM_INFO;
(2)、MEMORY_BASIC_INFORMATION结构定义如下:
typedef struct _MEMORY_INFORMATION
PVOIDBaseA
//按页对齐方式分配时,分配包含基地址的最小页号
PVOIDAllocationB //APP的实际起始地址
DWORDAllocationP
//该区域初始设置的访问方式
SIZE_TRegionS
//虚存区的大小
//区域的状态
//区域设置的访问方式
//区域的页面类型
}MEMORY_BASIC_INFORMATION, * PMEMORY_BASIC_INFORMATION;
①、AllocationProtect可能有的方式为PAGE_READONLY, PAGE_READWRITE,
PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE,
PAGE_EXECUTE_WRITECOPY(对于该地址空间的区域,不管执行什么操作,都不会引发访问违规。如果试图在该页上进行写入操作,就会将它自己的私有页复制赋予该进程),
PAGE_NOACCESS(禁止一切访问), PAGE_NOCACHE(禁用已提交页的高速缓存)。
②、State的状态有空闲、预留和提交(MEM_FREE, MEM_RESERVE,MEM_COMMIT)。
③、Type有可执行映像(MEM_IMAGE, 如EXE或DLL文件)、内存映射文件(MEM_MAPPING)或私有内存区(MEM_PRIVATE)。这些相邻页面拥有相同的保护属性、状态和类型。
(3)、PERFORMANCE_INFORMATION结构定义如下:
typedef struct _PERFORMANCE_INFORMATION
//按字节算的结构体大小
SIZE_TCommitT
//系统当前提交的页面总数
SIZE_TCommitL
//系统当前可提交的最大页面总数
SIZE_TCommitP
//系统历史提交的页面峰值
SIZE_TPhysicalT
//按页分配的总物理内存
SIZE_TPhysicalA
//当前可用的物理内存
SIZE_TSystemC
//系统cache容量
SIZE_TKernelT
//按页算的内存容量
SIZE_TKernelP
//分页池大小
SIZE_TPageS
//页的大小
DWORDHandleC
//打开的句柄数
DWORDProcessC //打开的进程个数
DWORDThreadC
//打开的线程个数
} PERFORMANCE_INFORMATION, *PERFORMANCE_INFORMATION;
(4)、MEMORYSTATUSEX结构定义如下:
typedef struct _MEMORYSTATUSEX
//结构体的大小
DWORDdwMemoryL
//物理内存的使用率
DWORDLONGullTotalP
//总的物理内存
DWORDLONGullAvailP
//可用的物理内存
DWORDLONGullTotalPageF //总的交换文件
DWORDLONGullAvailPageF //可用的交换文件
DWORDLONGullTotalV
//总的虚拟内存
DWORDLONGullAvailV
//可用的虚拟内存
DWORDLONGullAvailExtendedV
//扩展内存
}MEMORYSTATUSEX, *LPMEMORYSTATUSEX;
2、编写程序
(1)、调用GlobalMemoryStatusEx()输出内存信息;
(2)、调用GetSystemInfo()输出系统信息;
(3)、调用GetPerformanceInfo()输出系统的存储器使用情况信息;
(4)、获取各个进程的信息;
(5)、对于选定的进程,利用VirtualQueryEx()检测进程的虚拟地址空间信息。
六、实验结果
七、实验分析与总结
通过理解Windows 的相关API,然后在程序中调用它,可以很顺利的得到上面的结果。对于本实验,自己掌握了许多关于Windows的内存信息系统函数,如GetSystemInfo(), VirtualQueryEx(), VirtualAlloc(),GetPerformanceInfo(),GlobalMemoryStatusEx()等,获取系统以及进程特征信息的函数有了更深入的了解,如各个函数的参数的意义和应用。通过此次实验也解除了我自己的一个疑惑,明白进程占用的存储空间远没有我想的那么多。在Windows平台上,每个进程的虚拟内存地址会映射为物理内存地址,Windows通过分配RAM、页面文件或两者中的空间,准确的知道APP所需要的内存。
八、实验源代码
// 内存监视.cpp : 定义控制台应用程序的入口点。
/* TITLE:设计一个内存监视器,能实时地显示当前系统中内存的使用情况,包括系统地址空间
的布局,物理内存的使用情况;能实时显示某个进程的虚拟地址空间布局和工作集信息等。
作者:野狼
#include "stdafx.h"
#include &cstdio&
#include &cstdlib&
#include &iostream&
#include &windows.h&
#include &psapi.h&
#include &tlhelp32.h&
#include &shlwapi.h&
#include &iomanip&
#pragma comment(lib,"Shlwapi.lib")
//显示保护标记,该标记表示允许应用程序对内存进行访问的类型
inline bool TestSet(DWORD dwTarget, DWORD dwMask)
return ((dwTarget &dwMask) == dwMask);
#define SHOWMASK(dwTarget,type) if(TestSet(dwTarget,PAGE_##type)){cout && "," && #}
void ShowProtection(DWORD dwTarget)
{//定义的页面保护类型
SHOWMASK(dwTarget, READONLY);
SHOWMASK(dwTarget, GUARD);
SHOWMASK(dwTarget, NOCACHE);
SHOWMASK(dwTarget, READWRITE);
SHOWMASK(dwTarget, WRITECOPY);
SHOWMASK(dwTarget, EXECUTE);
SHOWMASK(dwTarget, EXECUTE_READ);
SHOWMASK(dwTarget, EXECUTE_READWRITE);
SHOWMASK(dwTarget, EXECUTE_WRITECOPY);
SHOWMASK(dwTarget, NOACCESS);
//遍历整个虚拟内存,并显示各内存区属性的工作程序的方法
void WalkVM(HANDLE hProcess)
SYSTEM_INFO //系统信息结构
ZeroMemory(&si, sizeof(si)); //初始化
GetSystemInfo(&si); //获得系统信息
MEMORY_BASIC_INFORMATION //进程虚拟内存空间的基本信息结构
ZeroMemory(&mbi, sizeof(mbi)); //分配缓冲区,用于保存信息
//循环整个应用程序地址空间
LPCVOID pBlock = (LPVOID)si.lpMinimumApplicationA
while (pBlock & si.lpMaximumApplicationAddress)
//获得下一个虚拟内存块的信息
if (VirtualQueryEx(
hProcess, //相关的进程
//开始位置
sizeof(mbi)) == sizeof(mbi)) //长度的确认,如果失败返回0
//计算块的结尾及其长度
LPCVOID pEnd = (PBYTE)pBlock + mbi.RegionS
TCHAR szSize[MAX_PATH];
//将数字转换成字符串
StrFormatByteSize(mbi.RegionSize, szSize, MAX_PATH);
//显示块地址和长度
cout.fill('0');
cout && hex && setw(8) && (DWORD)pBlock && "-" && hex && setw(8) && (DWORD)pEnd && (strlen(szSize) == 7 ? "(" : "(") && szSize && ")";
//显示块的状态
switch (mbi.State)
case MEM_COMMIT:
printf("已提交");
case MEM_FREE:
printf("空闲");
case MEM_RESERVE:
printf("已预留");
//显示保护
if (mbi.Protect == 0 && mbi.State != MEM_FREE)
mbi.Protect = PAGE_READONLY;
ShowProtection(mbi.Protect);
//显示类型
switch (mbi.Type)
case MEM_IMAGE:
printf(", Image");
case MEM_MAPPED:
printf(", Mapped");
case MEM_PRIVATE:
printf(", Private");
//检验可执行的映像
TCHAR szFilename[MAX_PATH];
if (GetModuleFileName(
(HMODULE)pBlock,
//实际虚拟内存的模块句柄
szFilename,
//完全指定的文件名称
MAX_PATH) & 0)
//实际使用的缓冲区长度
//除去路径并显示
PathStripPath(szFilename);
printf(", Module:%s", szFilename);
printf("\n");
//移动块指针以获得下一个块
pBlock = pE
int main(int argc, char* argv[])
MEMORYSTATUSEX //
statex.dwLength = sizeof(statex);
//获取系统内存信息
GlobalMemoryStatusEx(&statex);
printf("-----------------------内存信息-----------------------\n");
//内存使用率
printf("物理内存的使用率为:%ld%%\n", statex.dwMemoryLoad);
//物理内存
printf("物理内存的总容量为: %.2fGB.\n", (float)statex.ullTotalPhys / 1024 / 1024 / 1024);
//可用物理内存
printf("可用的物理内存为: %.2fGB.\n", (float)statex.ullAvailPhys / 1024 / 1024 / 1024);
//提交的内存限制
printf("总的交换文件为:%.2fGB.\n", (float)statex.ullTotalPageFile / 1024 / 1024 / 1024);
//当前进程可以提交的最大内存量
printf("可用的交换文件为:%.2fGB.\n", (float)statex.ullAvailPageFile / 1024 / 1024 / 1024);
//虚拟内存
printf("虚拟内存的总容量为:%.2fGB.\n", (float)statex.ullTotalVirtual/1024 / 1024 / 1024);
//可用虚拟内存
printf("可用的虚拟内存为:%.2fGB.\n", (float)statex.ullAvailVirtual/1024 / 1024 / 1024);
//保留字段
printf("保留字段的容量为:%.2fByte.\n",statex.ullAvailExtendedVirtual);
printf("------------------------------------------------------\n");
SYSTEM_INFO //系统信息结构
ZeroMemory(&si, sizeof(si));
GetSystemInfo(&si); //获得系统信息
printf("---------------------系统信息-------------------------\n");
printf("内存页的大小为:%dKB.\n", (int)si.dwPageSize/1024);
cout && "每个进程可用地址空间的最小内存地址为: 0x" && si.lpMinimumApplicationAddress &&
cout && "每个进程可用的私有地址空间的最大内存地址为: 0x" && si.lpMaximumApplicationAddress &&
cout && "能够保留地址空间区域的最小单位为: " && si.dwAllocationGranularity/1024 && "KB" &&
printf("------------------------------------------------------\n");
//获取系统的存储器使用情况
PERFORMANCE_INFORMATION
pi.cb = sizeof(pi);
GetPerformanceInfo(&pi, sizeof(pi));
printf("----------------系统的存储器使用情况------------------\n");
cout && "结构体的大小为: " && pi.cb && "B" &&
cout && "系统当前提交的页面总数: " && pi.CommitTotal &&
cout && "系统当前可提交的最大页面总数: " && pi.CommitLimit &&
cout && "系统历史提交页面峰值: " && pi.CommitPeak &&
cout && "按页分配的总物理内存: " && pi.PhysicalTotal &&
cout && "当前可用的物理内存为: " && pi.PhysicalAvailable &&
cout && "系统Cache的容量为: " && pi.SystemCache &&
cout && "内存总量(按页)为: " && pi.KernelTotal &&
cout && "分页池的大小为: " && pi.KernelPaged &&
cout && "非分页池的大小为: " && pi.KernelNonpaged &&
cout && "页的大小为: " && pi.PageSize &&
cout && "打开的句柄个数为: " && pi.HandleCount &&
cout && "进程个数为: " && pi.ProcessCount &&
cout && "线程个数为: " && pi.ThreadCount &&
printf("------------------------------------------------------\n");
//获得每个进程的信息
printf("------------------各个进程的信息----------------------\n");
PROCESSENTRY32
pe.dwSize = sizeof(pe);
HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
BOOL bMore = ::Process32First(hProcessSnap, &pe);
while (bMore)
HANDLE hP = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe.th32ProcessID);
PROCESS_MEMORY_COUNTERS
ZeroMemory(&pmc, sizeof(pmc));
if (GetProcessMemoryInfo(hP, &pmc, sizeof(pmc)) == TRUE)
cout && " 进程ID:";
wcout && pe.th32ProcessID &&
cout && " 进程名称:";
wcout && pe.szExeFile &&
cout && " 虚拟内存的大小为:" && (float)pmc.WorkingSetSize / 1024 && "KB" &&
bMore = ::Process32Next(hProcessSnap, &pe);
printf("----------------------------------------------------\n");
printf("-------进程虚拟地址空间布局和工作集信息查询---------\n");
printf("输入要查询的进程ID:");
HANDLE hP = OpenProcess(PROCESS_ALL_ACCESS, FALSE, x);
WalkVM(hP);
getchar();
getchar();
发现JDK下好用的几个工具(内存监视)
Java 自带性能监控工具:监视和管理控制台 jconsole 的使用
监视其它进程中某一内存的数据的变化
没有更多推荐了,通技术,懂管理,爱分享
Perfmon - Windows 自带系统监测工具
一、 简述可以用于监视、内存使用率、硬盘读写速度、等。Perfmon提供了图表化的系统性能实时监视器、性能日志和警报管理,系统的性能日志可定义为二进制文件、文本文件、SQLSERVER表记录等方式,可以很方便地使用第三方工具进行性能分析。perfmon.exe 文件位于C:\Windows\System32目录下。  使用方法:  1)开始 - 运行,输入 perfmon 后回车,即可打开perfmon.exe。  2)在 perfmon.exe 的左窗格中,单击“系统监视器”(如果未选中)。 3)在右窗格中[单击右键,然后单击“添加计数器”。  4)在“性能对象”列]表中,选择要在 PerfMon.exe 中显示其图形的计数器类别,单击“添加”。二、常用的性能指标系统的整体性能由许多因素决定,例如CPU利用率、CPU队列长度、磁盘空间和I/O、内存使用情况、流量等等。对于实时性要求较高的系统而言,对系统关键性指标的有效监控和管理是保证系统高可用性的重要手段,因此,务必制定出明确的系统性能策略规划,并对这些性能指标进行有效的实时监控。当关键性能指标严重偏离或者系统发生故障时,应该采取有效手段来准确定位问题引发的原因,并通过调优系统配置或改进应用程序等手段来有效提高系统的可用性。(一)Perfmon的监控对象Perfmon提供了比较全面的系统性能指标,并且能够根据性能管理的要求订制日志内容、制定关键指标偏离时的警报措施。《表一》列出了Perfmon可以监控的性能对象,每一个性能对象项下包含多个性能指标计数器。表一:性能对象描述性能对象 提供的信息 BrowserBrowser performance object 由衡量通知、枚举和其他浏览器传输率的计数器组成CacheCache performance object 包括监督文件系统缓存(物理内存上尽可能长时间的存储最近使用过的数据以便访问该数据时不需再从磁盘上读取的那一部分内存。)的计数器。因为应用程序只使用缓存,因此该缓存可作为应用程序 I/O 操作的指示器。当有足够内存时,缓存可增大,但当内存不足时,缓存会变得太小而无法使用。Distributed Transaction CoordinatorMicrosoft Distributed Transaction Coordinator 性能计数器ICMPICMP performance object 包括衡量用 ICMP 协议发送和接收消息的速度的计数器。它还包括监督 ICMP 协议错误的计数器。IPIP performance object 包括衡量使用 IP 协议发送和接收的 IP 数据报速度的计数器。它还包含监督 IP 协议错误计数器。Job object由每个活动命名的作业对象收集的帐户和处理器使用数据的报告。Job object DetailJob object Detail 显示有关作业对象中的活动处理的详细的操作信息。Logical DiskLogical Disk performance object 包含监视一个硬盘或固定磁盘驱动器的逻辑分区的计数器。Performance Monitor 用逻辑磁盘的驱动器号(如: C)来识别逻辑磁盘。MemoryMemory performance object 由描述计算机上的物理和虚拟内存行为的计数器组成。物理内存指计算机上的随机存取存储器的数量。虚拟内存由物理内存和磁盘上的空间组成。许多内存计数器监视页面调度(指磁盘与物理内存之的代码和数据页的移动)。过多的页面调度(内存不足的一种表现)可引起拖延,会影响整个系统处理效率。NBT ConnectionNBT Connection performance object 包括衡量用 NBT 连接在一台本地计算机和一台远程计算机之间发送和接收字节的速率的计数器。该连接用远程计算机的名称来识别。Network InterfaceNetwork Interface performance object 包括衡量通过一个 TCP/IP 网络连接发送和接收字节和数据包的速率的计数器。它包括监督连接错误的计数器。ObjectsObject performance object 包含在系统中监督逻辑对象的计数器,如:处理、线程、多用户终端执行程序和信号量。这个信息可以用于检测计算机资源的不必要的消耗。每个对象需要内存以存储有关对象的基本信息。Paging FilePaging File performance object 包括监督在计算机上的分页文件的计数器。分页文件指为备份计算机上已用物理内存而保留的磁盘空间。Physical DiskPhysical Disk performance object 包含监视计算机上的硬盘或固定磁盘驱动器的计数器。磁盘用于存储文件、程序及分页数据并且通过读取检索这些项目并通过记录写入对其进行更改。物理磁盘计数器的值为逻辑磁盘(由磁盘分成)值的总和。Print Queue显示一个打印列队的操作统计。ProcessProcess performance object 包含监视运行中应用程序和系统处理的计数器。所有在一个处理中的线程均共享同一个地址空间并可以访问同样的数据。ProcessorProcessor performance object 包含衡量处理器活动方面的计数器。处理器是计算机进行算数和逻辑计算、在附属件起始操作及运行处理线程的部分。一台计算机可以有多台处理器。处理器对象将每台处理器作为对象的范例。Processor performance处理器信息PSched Pipe数据包计划程序中的管道统计数RAS PortRAS Port performance object 包括监督计算机上的 RAS 设备的每个远程访问服务端口的计数器。RAS TotalRAS Total performance object 包含将计算机上的远程访问服务(RAS)设备的所有端口的值相加的计数器。RedirectorRedirector performance object 包括在本地计算机上监督网络连接的计数器。
RSVPRSVP 服务性能计数器。SystemSystem performance object 包含应用于计算机上不止一个组件处理器范例的计数器。TCPTCP performance object 包含衡量使用 TCP 协议发送和接收 TCP Segment 速率的计数器变量。它包含监督在每个 TCP 连接状态下的 TCP 连接数目的计数器变量。Telephony电话服务系统Terminal Services终端服务信息。Terminal Services Session每次终端服务会话资源监督。ThreadThread performance object 包括衡量线程行为方面的计数器。一个线程是在一台处理器上执行指令的基本对象。所有运行的处理至少有一个线程。UDPUDP performance object 包含衡量使用 UDP 协议发送和接收 UDP 数据报的速率的计数器。它包括监督 UDP 协议错误的计数器。WMI ObjectsWMI 适配器返回的 WMI 高性能提供程序(二)常用的Perfmon监控对象与指标以上列出的性能对象总共有上百个性能指标,我们关注一个系统的性能时,不可能关注这么多指标,有些对象对实际的应用系统影响并不大。但对一个Windows操作系统来说,CPU、Memmory、Disk和Network等关键对象是性能监控中必不可少的项。《表二》列举了最常用的性能对象的重要指标。表二:常用的性能对象与指标性能对象 计数器 提供的信息 Processor% Idle Time% Idle Time 是处理器在采样期间空闲的时间的百分比Processor% Processor Time% Processor Time 指处理器用来执行非闲置线程时间的百分比。计算方法是,测量范例间隔内非闲置线程活动的时间,用范例间隔减去该值。这个计数器是处理器活动的主要说明器,显示在范例间隔时所观察的繁忙时间平均百分比。Processor% User Time% User Time 指处理器处于用户模式的时间百分比。用户模式是为应用程序、环境分系统和整数分系统设计的有限处理模式。Memory Available Bytes Available Bytes显示出当前空闲的物理内存总量。当这个数值变小时,Windows开始频繁地调用磁盘页面文件。如果这个数值很小,例如小于5 MB,系统会将大部分时间消耗在操作页面文件上。Memory % Committed Bytes in Use % Committed Bytes In Use 是 Memory: Committed Bytes 与Memory: Commit Limit之间的比值。(Committed memory指如果需要写入磁盘时已在分页文件中保留空间的处于使用中的物理内存。Commit Limit是由分页文件的大小而决定的。如果扩大了分页文件,该比例就会减小)。这个计数器只显示当前百分比;而不是一个平均值。Memory Page Faults/sec Page Faults/sec是指处理器处理错误页的综合速率。用错误页数/秒来计算。当处理器请求一个不在其工作集(在物理内存中的空间)内的代码或数据时出现的页错误。这个计数器包括硬错误(那些需要磁盘访问的)和软错误(在物理内存的其它地方找到的错误页)。许多处理器可以在有大量软错误的情况下继续操作。但是,硬错误可以导致明显的拖延。这个计数器显示用上两个实例中观察到的值之间的差除以实例间隔的持续时间所得的值。Network Interface Bytes Total/sec Bytes Total/sec是发送和接收字节的速率,包括帧字符在内。 Network Interface Packets/sec Packets/sec为发送和接收数据包的速率。 Physical Disk % Busy Time % Busy Time指磁盘器忙于为读或写入请求提供服务所用的时间的百分比。Physical Disk Avg. Disk Queue Length Avg. Disk Queue Length 指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。 Physical Disk Current Disk Queue Length Current Disk Queue Length指在收集操作数据时在磁盘上未完成的请求的数目。它包括在快照内存时正在为其提供服务中的请求。这是一个即时长度而非一定间隔时间的平均值。多主轴磁盘设备可以一次有多个请求操作,但是其它同时发生的请求为等候服务。这个计数器可能会反映一个暂时的高或低的列队长度,但是如果在磁盘驱动器存在持续负载,可能值会总是很高。请求等待时间与这个列队的长度减去磁盘上的主轴成正比。这个差值应小于2才能保持良好的性能。LogicalDisk% Free Space% Free Space 是所选定的逻辑磁盘驱动器上总的可用空闲空间的百分比。LogicalDiskFree Megabytes可用的 MB 显示磁盘驱动器上尚未分配的空间。 (三)Perfmon对进程的监控指标
一般说来,服务器上都布署了一个或多个应用程序,这些应用程序在运行期间经常体现为若干个应用进程。为了便于监控应用程序的运行情况,在程序设计过程中一般都会同时布署应用系统的监控程序。Perfmon也设置了进程监控常用指标,这些指标比较直观地体现了进程的运行状况,是进行应用系统监控或应用系统跟踪调优的依据。《表三》列出了进程监控的主要指标。表三:Process对象的主要指标性能对象 计数器 提供的信息 Process% Privileged Time% Privileged Time 是在特权模式下处理线程执行代码所花时间的百分比。当调用 Windows 系统服务时,此服务经常在特权模式运行,以便获取对系统专有数据的访问。在用户模式执行的线程无法访问这些数据。对系统的调用可以是直接的(explicit)或间接的(implicit),例如页面错误或间隔。Process% Processor Time% Processor Time 是所有进程线程使用处理器执行指令所花的时间百分比。指令是计算机执行的基础单位。线程是执行指令的对象,进程是程序运行时创建的对象。此计数包括处理某些硬件间隔和陷阱条件所执行的代码。Process% User Time% User Time 指处理线程用于执行使用用户模式的代码的时间的百分比。应用程序、环境分系统和集合分系统是以用户模式执行的。Windows 的可执行程序、内核和设备驱动程序不会被以用户模式执行的代码损坏。ProcessCreating Process ID valueCreating Process ID value 指创建该进程的父进程号。ProcessElapsed Time该进程运行的总时间(用秒计算)。ProcessHandle Count由这个处理现在打开的句柄总数。这个数字等于这个处理中每个线程当前打开的句柄的总数。ProcessID ProcessID Process 指这个处理的特别的识别符。ID Process 号可重复使用,所以这些 ID Process 号只能在一个处理的寿命期内识别那个处理。ProcessIO Data Bytes/sec处理从 I/O 操作读取/写入字节的速度。这个计数器为所有由本处理产生的包括文件、网络和设备 I/O 的活动计数。ProcessIO Data Operations/sec本处理进行读取/写入 I/O 操作的速率。这个计数器为所有由本处理产生的包括文件、网络和设备 I/O 的活动计数。ProcessIO Other Bytes/sec处理给不包括数据的 I/O 操作(如控制操作)字节的速率。这个计数器为所有由本处理产生的包括文件、网络和设备 I/O 的活动计数。ProcessIO Other Operations/sec本处理进行非读取/写入 I/O 操作的速率。例如,控制性能。这个计数器为所有由本处理产生的包括文件、网络和设备 I/O 的活动计数。ProcessIO Read Bytes/sec处理从 I/O 操作读取字节的速度。这个计数器为所有由本处理产生的包括文件、网络和设备 I/O 的活动计数。ProcessIO Read Operations/sec本处理进行读取 I/O 操作的速率。这个计数器为所有由本处理产生的包括文件、网络和设备 I/O 的活动计数。ProcessIO Write Bytes/sec处理从 I/O 操作写入字节的速度。这个计数器为所有由本处理产生的包括文件、网络和设备。ProcessIO Write Operations/sec本处理进行写入 I/O 操作的速率。这个计数器为所有由本处理产生的包括文件、网络和设备 I/O 的活动计数。ProcessPage Faults/secPage Faults/sec 指在这个进程中执行线程造成的页面错误出现的速度。当线程引用了不在主内存工作集中的虚拟内存页即会出现 Page Fault。如果它在备用表中(即已经在主内存中)或另一个共享页的处理正在使用它,就会引起无法从磁盘中获取页。ProcessPage File BytesPage File Bytes 指这个处理在 Paging file 中使用的最大字节数。Paging File 用于存储不包含在其他文件中的由处理使用的内存页。Paging File 由所有处理共享,并且 Paging File 空间不足会防止其他处理分配内存。ProcessPage File Bytes PeakPage File Bytes Peak 指这个处理在 Paging files 中使用的最大数量的字节。ProcessPool Nonpaged BytesPool Nonpaged Bytes 指在非分页池中的字节数,非分页池是指系统内存(操作系统使用的物理内存)中可供对象(指那些在不处于使用时不可以写入磁盘上而且只要分派过就必须保留在物理内存中的对象)使用的一个区域。这个计数器仅显示上一次观察的值;而不是一个平均值。ProcessPool Paged BytesPool Paged Bytes 指在分页池中的字节数,分页池是系统内存(操作系统使用的物理内存)中可供对象(在不处于使用时可以写入磁盘的)使用的一个区域。这个计数器仅显示上一次观察的值;而不是一个平均值。ProcessPriority Base这次处理的当前基本优先权。在一个处理中的线程可以根据处理的基本优先权提高或降低自己的基本优先权。ProcessPrivate BytesPrivate Bytes 指这个处理不能与其他处理共享的、已分配的当前字节数。ProcessThread Count在这次处理中正在活动的线程数目。指令是在一台处理器中基本的执行单位,线程是指执行指令的对象。每个运行处理至少有一个线程。ProcessVirtual BytesVirtual Bytes 指处理使用的虚拟地址空间的以字节数显示的当前大小。使用虚拟地址空间不一定是指对磁盘或主内存页的相应的使用。虚拟空间是有限的,可能会限制处理加载数据库的能力。ProcessVirtual Bytes PeakVirtual Bytes Peak 指在任何时间内该处理使用的虚拟地址空间字节的最大数。ProcessWorking SetWorking Set 指这个处理的 Working Set 中的当前字节数。Working Set 是在处理中被线程最近触到的那个内存页集。如果计算机上的可用内存处于阈值以上,即使页不在使用中,也会留在一个处理的 Working Set中。当可用内存降到阈值以下,将从 Working Set 中删除页。如果需要页时,它会在离开主内存前软故障返回到 Working Set 中。ProcessWorking Set PeakWorking Set Peak 指在任何时间这个在处理的 Working Set 的最大字节数。 二、Perfmon功能之一——性能监视器在Windows中,性能监视器以一个管理控制台(MMC)单元的形式实现。在windows的开始-&运行框中输入perfmon.msc启动Windows的性能监视器,可以看到类似图一的界面。 性能监视器主要用来对指定的系统性能指标进行实时监控,但这些性能的指标记录不能被保存。如果要保存这些性能日志,可以用后面介绍的“计数器日志”功能。性能监视器的另外一个功能是对计数器日志生成的日志记录进行非实时的图表化展现。在性能监视器中楞以通过“查看当前活动”或“当看日志数据”功能项来指定监控的性能指标项目。一般说来,由于性能监视器的显示窗口大小有限,不宜指定太多的实时监控项目,否则窗口中的显示很难突出需要重点监控的项目。我们可以根据不同的监控目标制订不同的实时监控方案,每一个方案均可以保存为一个MSManagement Console(msc)文件。三、Perfmon功能之二——计数器日志前面介绍了系统监视器的功能时提到,系统监视器主要用于重要性能指标的实时监控,它不能保存被监控的性能指标历史数据。如果需要持续对系统的性能指标采样,就必须用到Peofmon的计数器日志的功能。计数器日志在日志文件中记录指定的系统性能数据,这些日志数据可以用系统监视器查看或用其他工具处理,这对于分析系统某一段时间内的运行状况或者是交由第三方性能管理工具来进行性能管理十分有用。为了说明如何使用计数器日志,我们要新建一个日志会话。扩展控制台中的“性能日志和警报”节点下可以看到“计数器日志”分节点,右击“计数器日志”分节点,选择“新建日志设置”,指定日志设置的名称,点击“确定”,出现图二的对话框,在这里设定要在日志中记录的计数器(即需要记录的性能指标)。点击“添加对象”按钮,将某个监视对象的所有计数器加入日志记录,或者点击“添加计数器”按钮加入单个计数器。日志文件的默认保存路径是C:\perflogs目录,在设置时可以根据需要在“日志文件”项下修改。日志文件保存的格式可以根据需要设定成文本文件、二进制文件、SQL数据库记录。在“计划”项下,可以设置性能日志的启动和关闭时间计划,也可以设置日志关闭后的指定动作。我们可以根据不同的监控需求制订不同的性能日志方案,每一个方案均可以保存为一个HTML文件。三、Perfmon功能之三——跟踪日志
Perfmon的跟踪日志功能可以提供对某些重要系统事件的跟踪,也可以指定对特定应用程序的跟踪。跟踪日志以二进制文件保存(默认扩展名为.etl),可以用tracerpt对日志进行分析,并生成CSV格式的dump文件。该功能目前没有提供直观的配置手段来订制对特定应用程序的跟踪,必须通过编辑系统的注册表来实现。这一功能主要应用在程序调试、故障分析过程中。图三是订制跟踪日志的对话框,在其“日志文件”、“计划”项下可以设置日志文件的存放路径、文件大小限制、日志启停计划等项目。四、Perfmon功能之四——警报 Perfmon的警报功能是指当某个计数器的性能数据达到指定的值时,执行一定的动作,例如发送Email、用NetSend命令发送消息或者运行指定的程序。也可以指定当警报发生时将警报当作系统的事件记录在系统事件记录里,这样可以很方便地用事件查看器来调阅警报的内容。警报的报警指标设置与性能计数器的指标相同,针对不同的应用,我们可以制订不同的警报策略。图四示例的是当CPU的IdleTime低于70%时触发一个警报的订制对话框。在“操作”和|“计划”项下,可以配置警报发生时的指定操作、警报设置的启停动作等。五、Perfmon布署方法
对Windows系统的性能监控需要有较高的用户权限,Perfmon默认的可执行权限是管理员用户,从系统安全性考虑,不建议将管理员作为日常监控的用户。Windows2000 Server提供了性能管理用户组,在实施系统的性能监控时,可建立一个该组的普通用户。
Windows提供了Perfmon的两种布署方式:本地监控和远程监控。本地监控产生的日志文件默认保存路径是C:\perflogs目录,在设置时可以根据需要在“日志文件”项下修改。本地监控产生的日志文件除了可以在本机用性能监视器进行观测外,还可以外传到第三方监测分析平台上。远挰监控可以实现对局域网内多台监控目标进行集中采样监控,其前提是监控主机与目标主机之间必须建立信任关系,并且打开相应的远程访问控制。在访问控制比较严格的环境下,远程监控难以布署。布署Permon时还应该考虑志文件的存放问题,如果要长时间收集性能数据,最好调整一下采样间隔时间,如果采样间隔时间设置得太小,日志文件会快速增。 Perfmon的管理也有两种方法:控制台管理和命令行方式管理。可以通过运行Perfmon.msc调出性能管理的控制台,并根据监控策略制订、管理控制台。Perfmon的另一种管理方式是命令行方式,Windows提供了一个专门用于管理性能监控的命令――Logman,它不仅能够在命令行上启动和停止日志会话,而且能够从命令行创建新的日志会话。有关Logman命令的用法可参阅Logman命令指南。还有另外一个命令能方便地采集到系统性能数据,但仅仅是获取数据,并不产生警报和日志记录的动作。这种方式在使用第三方软件来监控Windows系统的性能时经常用到。Windows提供了一个显示当前性能指标的命令----Typeperf。用Typeperf可以得到前面提到的Perfmon的所有指标值。Typeperf的标准输出是屏幕显示,我们可以通过输出重定义将结果输出到文本文件当中,并将结果文件传给第三方系统。这种应用方式下,Typeperf的动作由第三方软件根据需要来管理,也可以通过订制计划任务来定时启动。有关Typeperf命令的用法可参阅Typeperf命令指南。
Win10下系统自带的各种监测工具
推荐一款全面的系统性能监控工具 -- glances
关于perfmon2的使用记录
perfmon 能干啥(草稿*)
Windows 性能监视器工具-perfmon
六大开源监测工具 你用过哪个?
Perfmon - Windows 自带系统监控工具
jmeter之插件perfmon
【JMeter 菜鸟实操之一】PerfMon插件(相关步骤纠正)
Windows性能监视器数值分析(转)
没有更多推荐了,
(window.slotbydup=window.slotbydup || []).push({
id: '5865577',
container: s,
size: '300,250',
display: 'inlay-fix'}

我要回帖

更多关于 手机虚拟内存 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信