NdisGetCurrentProcessorCounts
VOID
NdisGetCurrentProcessorCounts(
OUT PULONG pIdleCount,
OUT PULONG pKernelAndUser,
OUT PULONG pIndex
);
|
NdisGetCurrentProcessorCountsÇÔ¼ö´Â µå¶óÀ̹ö°¡ ÁöÁ¤ÇÑ Å¸ÀÓ ±â°£¿¡´ëÇØ CPUÀÌ¿ëÀ» °áÁ¤ÇϱâÀ§ÇØ »ç¿ëÇÒ¼ö ÀÖ´Â ÇöÀç ÇÁ·Î¼¼¼¿¡´ëÇÑ Ä«¿îÆ®¸¦ ¸®ÅÏÇÑ´Ù.
¸Å°³º¯¼ö
- pIdleCount
- ÀÌÇÔ¼ö°¡ ½Ã½ºÅÛÀÌ ºÎÆÃµÈÀÌÈÄ·Î ´©ÀûµÇ´Â Áö¿¬½Ã°£À» ¸®ÅÏÇϴ°Ϳ¡´ëÇØ È£ÃâÀÚ ÇÒ´ç º¯¼öÀÇ Æ÷ÀÎÅÍ.
- pKernelAndUser
- ÀÌÇÔ¼ö°¡ ½Ã½ºÅÛÀÌ ºÎÆÃµÈ ÀÌÈÄ·Î ÇÁ·Î¼¼¼¿¡´ëÇÑ ´©ÀûµÇ´Â ÇÁ·Î¼¼½Ì ½Ã°£(Ä¿³Î¸ðµå ½Ã°£ + À¯Àú¸ðµå ½Ã°£)À» ¸®ÅÏÇϴ°Ϳ¡´ëÇÑ È£ÃâÀÚ ÇÒ´ç º¯¼öÀÇ Æ÷ÀÎÅÍ.
- pIndex
- ÀÌÇÔ¼ö°¡ ¸Ó½Å ³»ÀÇ ÇÁ·Î¼¼¼¸¦ È®ÀÎÇÏ´Â ZERO-BASEÀ妽º¸¦ ¸®ÅÏÇϴ°Ϳ¡´ëÇÑ È£ÃâÀÚ ÇÒ´ç º¯¼ö.
ÁÖ¼®
NdisGetCurrentProcessorCountsÇÔ¼ö´Â È£ÃâÀÚ°¡ ÇöÀç ÇÁ·Î¼¼¼¿¡´ëÇØ CPU»ç¿ëÀ» °áÁ¤ÇϱâÀ§ÇØ »ç¿ëÇÒ¼ö ÀÖ´Â Áö¿¬°ú CPU-»ç¿ë Ä«¿îÆ®¸¦ ¸®ÅÏÇÑ´Ù. ¾ó¸¶³ª CPU°¡ ·ÎµåµÇ´ÂÁö¸¦ °¡¸®Å°´Â CPU»ç¿ë °ªÀº ÀÌ ÇÔ¼ö°¡ È£ÃâµÈ ±× ½ÃÁ¡ºÎÅÍÀÌ´Ù. ¸¸¾à CPU°¡ ¹«°Ì°Ô ·ÎµåµÆ´Ù¸é, ±×·± µå¶óÀ̹ö´Â µå¶óÀ̹öÀÇ ÆÛÆ÷¸Õ½º¸¦ Çâ»ó½Ã۱âÀ§ÇÑ ¾î¶² ¿¬»êÀ» ´Ù·ê ¹æ¹ýÀ» º¯È½Ãų¼ö ÀÖ´Ù.
µå¶óÀ̹ö´Â ŸÀÌ¸Ó ÇÔ¼ö·Î Á¤±âÀûÀ¸·Î NdisGetCurrentProcessorCountsÇÔ¼ö¸¦ È£Ãâ ÇÒ¼ö ÀÖ´Ù. ±× µå¶óÀ̹ö´Â ´ÙÁßÀÇ Å¸ÀÌ¸Ó °£°Ý¿¡´ëÇÑ CPU»ç¿ëÀ» °áÁ¤ÇϱâÀ§ÇØ ´ÙÀ½ÀÇ °è»êÀ» »ç¿ëÇÒ¼ö ÀÖ´Ù.:
CpuUsage = 100-100*(Idle - Idle[n]/((Idle - Idle[n]) \
+ (KernelAndUser - KernelAndUser[n]));
where:
- CpuUsage´Â ÃÑ ½Ã°£ °£°ÝÀÇ ÆÛ¼¾Æ®·Î½á CPU»ç¿ëÀÌ´Ù.
- IdleÀº NdisGetCurrentProcessorCountsÇÔ¼öÀÇ ¸¹Àº ÇöÀç È£Ãâ¿¡ÀÇÇÑ ¸®ÅÏµÈ IdleCountÀÌ´Ù.
- Idle[n]Àº ÀÌÀüÀÇ È£Ãâ¿¡ÀÇÇØ ¸®ÅÏµÈ IdlelCount°ªÀÌ°í ¹è¿ÀÇ n¹øÂ° ¿ä¼Ò·Î½á ÀúÀåµÈ´Ù.
- KernelandUser´Â ´ëºÎºÐÀÇ NdisGetCurrentProcessorCountsÇÔ¼öÀÇ ÇöÀç È£Ãâ¿¡ÀÇÇØ ¸®ÅÏµÈ KernelAndUser°ªÀÌ´Ù.
- KernelandUser[n]´Â ÀÌÀüÀÇ È£Ãâ¿¡ÀÇÇØ ¸®ÅÏµÈ KernelandUserÀÇ °ªÀÌ°í ¹è¿ÀÇ n¹øÂ°·Î½á ÀúÀåµÈ´Ù.
¿¹¸¦µé¾î, CPU»ç¿ëÀÇ ÆÛ¼¾Æ®°¡ Ä¿Áü¿¡µû¶ó, ¹Ì´ÏÆ÷Æ®´Â ´Ð¿¡´ëÇÑ ÀÎÅÍ·´Æ®¸¦ µð½º¿¡À̺í ÇÒ¼ö ÀÖ°í ´ÐÀÇ »óŸ¦ POLLINGÇϱâÀ§ÇØ ÀüȯÇÒ ¼ö ÀÖ´Ù. ÀÌ ¹æ¹ýÀº ´ÐÀÌ ¸¹Àº ÀÎÅÍ·´Æ®¸¦ ¹ß»ýÇÏ´Â µ¿¾È ÀÎÅÍ·´Æ® ÇÁ·Î¼¼½Ì ¿À¹öÇìµå¸¦ Á¦°ÅÇϴ°Ϳ¡ÀÇÇØ ³ôÀº ³×Æ®¿÷ Æ®·¡ÇȱⰣ µ¿¾È¿¡ ´õ ³ôÀº ÆÛÆ÷¸Õ½º¸¦ ³º´Â´Ù. ´ë½Å, ±×·± ´Ð µå¶óÀ̹öÀÇ POLLING MiniportTimerÇÔ¼ö´Â Áö½Ã¸¦ ¸¸µé°í ³×Æ®¿÷ Æ®·¡ÇÈÀÌ ´Ù½Ã °¨¼Ò ÇÒ¶§±îÁö º¸³»±â¸¦ ¿Ï·áÇÑ´Ù. NdisGetCurrentProcessorCountsÇÔ¼öÀÇ ÁÖ±âÀûÀΠȣÃâÀº CPU»ç¿ëÀÌ ´Ù½Ã ³·¾ÆÁö´Â °æÇâÀÌ ÀÖ°í ±×·± µå¶óÀ̹ö´Â ´Ð¿¡ ´ëÇÑ ÀÎÅÍ·´Æ®¸¦ ´Ù½Ã Àο¡À̺íÇϰí POLLING MiniportTimerÇÔ¼ö¸¦ Ãë¼ÒÇÑ´Ù.
NdisGetCurrentProcessorCountsÇÔ¼öÀÇ È£ÃâÀÚ´Â IRQL <= DISPATCH_LEVEL¿¡¼ µ¿À۵Ǿî¾ß¸¸ ÇÑ´Ù.
|