다음을 통해 공유


Microsoft Defender 바이러스 백신에 대한 성능 분석기

적용 대상

플랫폼

  • Windows

요구 사항

Microsoft Defender 바이러스 백신 성능 분석기는 다음과 같은 필수 구성 요소를 제공합니다.

  • 지원되는 Windows 버전:
  • 플랫폼 버전: 4.18.2108.7 이상
  • PowerShell 버전: PowerShell 버전 5.1, PowerShell ISE, 원격 PowerShell(4.18.2201.10 이상), PowerShell 7.x(4.18.2201.10 이상)

Microsoft Defender 바이러스 백신 성능 분석기가란?

Microsoft Defender 바이러스 백신을 실행하는 디바이스에 성능 문제가 발생하는 경우 성능 분석기를 사용하여 Microsoft Defender 바이러스 백신의 성능을 향상시킬 수 있습니다. 성능 분석기는 바이러스 백신 검사 중에 개별 엔드포인트에서 성능 문제를 일으킬 수 있는 파일, 파일 확장명 및 프로세스를 확인하는 데 도움이 되는 PowerShell 명령줄 도구입니다. 성능 분석기에서 수집한 정보를 사용하여 성능 문제를 평가하고 수정 작업을 적용할 수 있습니다.

성능 문제가 있는 차량에서 메커니즘이 진단 및 서비스를 수행하는 방식과 마찬가지로 성능 분석기는 Microsoft Defender 바이러스 백신 성능을 개선하는 데 도움이 될 수 있습니다.

Microsoft Defender 바이러스 백신에 대한 개념적 성능 분석기 이미지입니다.

분석할 수 있는 몇 가지 옵션은 다음과 같습니다.

  • 검사 시간에 영향을 주는 상위 경로
  • 스캔 시간에 영향을 주는 상위 파일
  • 검사 시간에 영향을 주는 주요 프로세스
  • 스캔 시간에 영향을 주는 상위 파일 확장자
  • 조합 – 예를 들면 다음과 같습니다.
    • 확장 프로그램당 상위 파일 수
    • 확장당 상위 경로
    • 경로당 상위 프로세스
    • 파일당 상위 검사
    • 프로세스당 파일당 상위 검사

성능 분석기 실행

성능 분석기를 실행하기 위한 개략적인 프로세스에는 다음 단계가 포함됩니다.

  1. 성능 분석기를 실행하여 엔드포인트에서 Microsoft Defender 바이러스 백신 이벤트의 성능 기록을 수집합니다.

    참고

    형식 Microsoft-Antimalware-Engine 의 Microsoft Defender 바이러스 백신 이벤트의 성능은 성능 분석기를 통해 기록됩니다.

  2. 다른 기록 보고서를 사용하여 검사 결과를 분석합니다.

성능 분석기 사용

시스템 이벤트 기록을 시작하려면 관리자 모드에서 PowerShell을 열고 다음 단계를 수행합니다.

  1. 다음 명령을 실행하여 기록을 시작합니다.

    New-MpPerformanceRecording -RecordTo <recording.etl>
    

    where -RecordTo 매개 변수는 추적 파일이 저장되는 전체 경로 위치를 지정합니다. 자세한 cmdlet 정보는 Microsoft Defender 바이러스 백신 cmdlet을 참조하세요.

  2. 성능에 영향을 주는 것으로 생각되는 프로세스 또는 서비스가 있는 경우 관련 작업을 수행하여 상황을 재현합니다.

  3. Enter 키를 눌러 기록을 중지하고 저장하거나 Ctrl+C를 눌러 녹음/녹화를 취소합니다.

  4. 성능 분석기 Get-MpPerformanceReport 매개 변수를 사용하여 결과를 분석합니다. 예를 들어 명령을 Get-MpPerformanceReport -Path <recording.etl> -TopFiles 3 -TopScansPerFile 10실행할 때 성능에 영향을 주는 상위 3개 파일에 대한 상위 10개 검색 목록이 사용자에게 제공됩니다.

    명령줄 매개 변수 및 옵션에 대한 자세한 내용은 New-MpPerformanceRecordingGet-MpPerformanceReport를 참조하세요.

참고

녹음/녹화를 실행할 때 "Windows 성능 레코더가 이미 기록 중이므로 성능 기록을 시작할 수 없습니다"라는 오류가 표시되면 다음 명령을 실행하여 새 명령 wpr -cancel -instancename MSFT_MpPerformanceRecording으로 기존 추적을 중지합니다.

성능 조정 데이터 및 정보

쿼리에 따라 사용자는 검사 수, 기간(총/최소/평균/최대/중앙값), 경로, 프로세스 및 검사 이유에 대한 데이터를 볼 수 있습니다. 다음 이미지는 검사 영향에 대한 상위 10개 파일의 간단한 쿼리에 대한 샘플 출력을 보여줍니다.

기본 TopFiles 쿼리에 대한 예제 출력

CSV 및 JSON으로 내보내기 및 변환

성능 분석기의 결과를 내보내고 CSV 또는 JSON 파일로 변환할 수도 있습니다. 이 문서에는 샘플 코드를 통해 "내보내기" 및 "변환" 프로세스를 설명하는 예제가 포함되어 있습니다.

Defender 버전 4.18.2206.X부터 사용자는 열 아래에서 SkipReason 검사 건너뛰기 이유 정보를 볼 수 있습니다. 가능한 값은 다음과 같습니다.

  • 건너뛰지 않음
  • 최적화(일반적으로 성능상의 이유로 인해)
  • 사용자가 건너뛰었다(일반적으로 사용자 집합 제외로 인해)

CSV의 경우

  • 내보내려면 다음을 수행합니다.
(Get-MpPerformanceReport -Path .\Repro-Install.etl -Topscans 1000).TopScans | Export-CSV -Path .\Repro-Install-Scans.csv -Encoding UTF8 -NoTypeInformation
  • 변환하려면 다음을 수행합니다.
(Get-MpPerformanceReport -Path .\Repro-Install.etl -Topscans 100).TopScans | ConvertTo-Csv -NoTypeInformation

JSON의 경우

  • 변환하려면 다음을 수행합니다.
(Get-MpPerformanceReport -Path .\Repro-Install.etl -Topscans 1000).TopScans | ConvertTo-Json -Depth 1

다른 데이터 처리 시스템으로 내보낼 때 컴퓨터에서 읽을 수 있는 출력을 보장하려면 에 매개 Get-MpPerformanceReport변수를 사용하는 -Raw 것이 좋습니다. 자세한 내용은 다음 섹션을 참조하세요.

PowerShell 참조

Microsoft Defender 바이러스 백신의 성능을 조정하는 데 사용되는 두 가지 새로운 PowerShell cmdlet이 있습니다.

New-MpPerformanceRecording

다음 섹션에서는 새 PowerShell cmdlet 에 대한 참조를 설명합니다 New-MpPerformanceRecording. 이 cmdlet은 Microsoft Defender 바이러스 백신 검사의 성능 기록을 수집합니다.

구문: New-MpPerformanceRecording

New-MpPerformanceRecording -RecordTo <String>

설명: New-MpPerformanceRecording

cmdlet은 New-MpPerformanceRecording Microsoft Defender 바이러스 백신 검사의 성능 기록을 수집합니다. 이러한 성능 기록에는 Microsoft-Antimalware-Engine 및 NT 커널 프로세스 이벤트가 포함되며 Get-MpPerformanceReport cmdlet을 사용하여 컬렉션 후에 분석할 수 있습니다.

New-MpPerformanceRecording cmdlet은 Microsoft Defender 바이러스 백신의 성능 저하를 일으킬 수 있는 문제가 있는 파일에 대한 인사이트를 제공합니다. 이 도구는 "있는 그대로" 제공되며 제외에 대한 제안을 제공하기 위한 것이 아닙니다. 제외는 엔드포인트의 보호 수준을 줄일 수 있습니다. 제외(있는 경우)는 주의해서 정의해야 합니다.

성능 분석기에 대한 자세한 내용은 Performance Analyzer 문서를 참조하세요.

중요

이 cmdlet에는 관리자 권한이 필요합니다.

예: New-MpPerformanceRecording

예제 1: 성능 기록 수집 및 저장
New-MpPerformanceRecording -RecordTo .\Defender-scans.etl

명령은 성능 녹음/녹화를 수집하고 지정된 경로 .\Defender-scans.etl인 에 저장합니다.

예제 2: 원격 PowerShell 세션에 대한 성능 기록 수집
$s = New-PSSession -ComputerName Server02 -Credential Domain01\User01
New-MpPerformanceRecording -RecordTo C:\LocalPathOnServer02\trace.etl -Session $s

명령은 (매개 변수 세션의 인수 $s 지정한 대로)에서 Server02 성능 기록을 수집하고 지정된 경로 C:\LocalPathOnServer02\trace.etl (의 )에 Server02저장합니다.

매개 변수: New-MpPerformanceRecording

-RecordTo

Microsoft Defender 맬웨어 방지 성능 기록을 저장할 위치를 지정합니다.

Type: String
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-세션

Microsoft Defender 바이러스 백신 성능 기록을 만들고 저장할 개체를 지정 PSSession 합니다. 이 명령을 사용하는 경우 매개 변수는 RecordTo 원격 컴퓨터의 로컬 경로를 참조합니다. Defender 플랫폼 버전 4.18.2201.10 이상에서 사용할 수 있습니다.

Type: PSSession[]
Position: 0
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

Get-MpPerformanceReport

다음 섹션에서는 PowerShell cmdlet에 대해 Get-MpPerformanceReport 설명합니다. Microsoft Defender 바이러스 백신 성능 기록을 분석하고 보고합니다.

구문: Get-MpPerformanceReport

    Get-MpPerformanceReport [-Path] <String> [-TopFiles <Int32>] [-TopScansPerFile <Int32>] [-TopProcessesPerFile 
<Int32>] [-TopScansPerProcessPerFile <Int32>] [-TopPaths <Int32>] [-TopPathsDepth <Int32>] [-TopScansPerPath 
<Int32>] [-TopFilesPerPath <Int32>] [-TopScansPerFilePerPath <Int32>] [-TopExtensionsPerPath <Int32>] 
    [-TopScansPerExtensionPerPath <Int32>] [-TopProcessesPerPath <Int32>] [-TopScansPerProcessPerPath <Int32>] 
    [-TopExtensions <Int32>] [-TopScansPerExtension <Int32>] [-TopPathsPerExtension <Int32>] 
    [-TopScansPerPathPerExtension <Int32>] [-TopFilesPerExtension <Int32>] [-TopScansPerFilePerExtension <Int32>] 
    [-TopProcessesPerExtension <Int32>] [-TopScansPerProcessPerExtension <Int32>] [-TopProcesses <Int32>] 
    [-TopScansPerProcess <Int32>] [-TopFilesPerProcess <Int32>] [-TopScansPerFilePerProcess <Int32>] 
    [-TopExtensionsPerProcess <Int32>] [-TopScansPerExtensionPerProcess <Int32>] [-TopPathsPerProcess <Int32>] 
    [-TopScansPerPathPerProcess <Int32>] [-TopScans <Int32>] [-MinDuration <String>] [-MinStartTime <DateTime>] 
    [-MinEndTime <DateTime>] [-MaxStartTime <DateTime>] [-MaxEndTime <DateTime>] [-Overview] [-Raw] 
    [<CommonParameters>]

설명: Get-MpPerformanceReport

cmdlet은 Get-MpPerformanceReport 이전에 수집된 Microsoft Defender 바이러스 백신 성능 기록(New-MpPerformanceRecording)을 분석하고 Microsoft Defender 바이러스 백신 검사에 가장 큰 영향을 주는 파일 경로, 파일 확장명 및 프로세스를 보고합니다.

성능 분석기는 Microsoft Defender 바이러스 백신의 성능 저하를 일으킬 수 있는 문제가 있는 파일에 대한 인사이트를 제공합니다. 이 도구는 "있는 그대로" 제공되며 제외에 대한 제안을 제공하기 위한 것이 아닙니다. 제외는 엔드포인트의 보호 수준을 줄일 수 있습니다. 제외(있는 경우)는 주의해서 정의해야 합니다.

성능 분석기에 대한 자세한 내용은 Performance Analyzer 문서를 참조하세요.

지원되는 OS 버전:

Windows 버전 10 이상.

참고

이 기능은 플랫폼 버전 4.18.2108.X 이상부터 사용할 수 있습니다.

예: Get-MpPerformanceReport

예제 1: 단일 쿼리
Get-MpPerformanceReport -Path .\Defender-scans.etl -TopScans 20
예제 2: 여러 쿼리
Get-MpPerformanceReport -Path .\Defender-scans.etl -TopFiles 10 -TopExtensions 10 -TopProcesses 10 -TopScans 10
예제 3: 중첩된 쿼리
Get-MpPerformanceReport -Path .\Defender-scans.etl -TopProcesses 10 -TopExtensionsPerProcess 3 -TopScansPerExtensionPerProcess 3
예제 4: -MinDuration 매개 변수 사용
Get-MpPerformanceReport -Path .\Defender-scans.etl -TopScans 100 -MinDuration 100ms
예제 5: -Raw 매개 변수 사용
Get-MpPerformanceReport -Path .\Defender-scans.etl -TopFiles 10 -TopExtensions 10 -TopProcesses 10 -TopScans 10 -Raw | ConvertTo-Json

명령에서 를 사용하면 -Raw 출력이 머신을 읽을 수 있고 JSON과 같은 serialization 형식으로 쉽게 변환할 수 있어야 합니다.

매개 변수: Get-MpPerformanceReport

-TopPaths

최상위 경로 보고서를 요청하고 출력할 상위 경로 수를 기간별로 정렬합니다. 해당 경로 및 디렉터리에 따라 검사를 집계합니다. 사용자는 각 수준에 표시해야 하는 디렉터리 수와 선택 영역의 깊이를 지정할 수 있습니다.

- Type: Int32
- Position: Named
- Default value: None
- Accept pipeline input: False
- Accept wildcard characters: False
-TopPathsDepth

집계된 경로 결과를 그룹화하고 표시하는 데 사용되는 재귀 깊이를 지정합니다. 예를 들어 C:\ 깊이는 1에 해당하고 C:\Users\Foo 깊이는 3에 해당합니다.

이 플래그는 다른 모든 상위 경로 옵션과 함께 사용할 수 있습니다. 누락된 경우 기본값인 3이 가정됩니다. 값은 0일 수 없습니다.

- Type: Int32
- Position: Named
- Default value: 3
- Accept pipeline input: False
- Accept wildcard characters: False
정의
-TopScansPerPath 각 상위 경로에 대해 지정할 상위 검사 수를 지정합니다.
-TopFilesPerPath 각 상위 경로에 대해 지정할 상위 파일 수를 지정합니다.
-TopScansPerFilePerPath "기간"을 기준으로 정렬된 각 상위 경로의 각 상위 파일에 대해 출력할 상위 검사 수를 지정합니다.
-TopExtensionsPerPath 각 상위 경로에 대해 출력할 상위 확장 수를 지정합니다.
-TopScansPerExtensionPerPath 각 상위 경로의 각 상위 확장에 대해 출력할 상위 검사 수를 지정합니다.
-TopProcessesPerPath 각 상위 경로에 대해 출력할 상위 프로세스 수를 지정합니다.
-TopScansPerProcessPerPath 각 상위 경로의 각 상위 프로세스에 대해 출력할 상위 검사 수를 지정합니다.
-TopPathsPerExtension 각 상위 확장에 대해 출력할 상위 경로 수를 지정합니다.
-TopScansPerPathPerExtension 각 상위 확장의 각 상위 경로에 대해 출력할 상위 검사 수를 지정합니다.
-TopPathsPerProcess 각 상위 프로세스에 대해 출력할 상위 경로 수를 지정합니다.
-TopScansPerPathPerProcess 각 상위 프로세스의 각 상위 경로에 대해 출력할 상위 검사 수를 지정합니다.
-MinDuration

보고서에 포함된 파일, 확장명 및 프로세스의 검사 또는 총 검사 기간의 최소 기간을 지정합니다. 는 , , 0.1234ms0.1us또는 유효한 TimeSpan과 같은 0.1234567sec값을 허용합니다.

Type: String
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-길

하나 이상의 위치에 대한 경로 또는 경로를 지정합니다.

Type: String
Position: 0
Default value: None
Accept pipeline input: True
Accept wildcard characters: False
-날것의

성능 기록의 출력은 컴퓨터에서 읽을 수 있고 JSON과 같은 직렬화 형식으로 쉽게 변환할 수 있도록 지정합니다(예: Convert-to-JSON 명령을 통해). 이 구성은 다른 데이터 처리 시스템과의 일괄 처리에 관심이 있는 사용자에게 권장됩니다.

Type: <SwitchParameter>
Position: Named
Default value: False
Accept pipeline input: False
Accept wildcard characters: False
-TopExtensions

출력할 상위 확장 수를 기간별로 정렬하여 지정합니다.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopExtensionsPerProcess

각 상위 프로세스에 대해 출력할 상위 확장 수를 기간별로 정렬하여 지정합니다.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopFiles

상위 파일 보고서를 요청하고 출력할 상위 파일 수를 기간별로 정렬합니다.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopFilesPerExtension

각 상위 확장에 대해 출력할 상위 파일 수를 기간별로 정렬하여 지정합니다.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopFilesPerProcess

각 상위 프로세스에 대해 출력할 상위 파일 수를 기간별로 정렬하여 지정합니다.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopProcesses

최상위 프로세스 보고서를 요청하고 출력할 상위 프로세스 수를 기간별로 정렬합니다.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopProcessesPerExtension

각 상위 확장에 대해 출력할 상위 프로세스 수를 기간별로 정렬하여 지정합니다.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopProcessesPerFile

각 상위 파일에 대해 출력할 상위 프로세스 수를 기간별로 정렬하여 지정합니다.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopScans

상위 검사 보고서를 요청하고 출력할 상위 검사 수를 기간별로 정렬합니다.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopScansPerExtension

각 상위 확장에 대해 출력할 상위 검사 수를 기간별로 정렬하여 지정합니다.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopScansPerExtensionPerProcess

각 상위 프로세스의 각 상위 확장에 대해 출력할 상위 검사 수를 기간별로 정렬합니다.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopScansPerFile

각 상위 파일에 대해 출력할 상위 검사 수를 기간별로 정렬하여 지정합니다.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopScansPerFilePerExtension

각 상위 확장명의 각 상위 파일에 대해 출력할 상위 검사 수를 기간별로 정렬합니다.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopScansPerFilePerProcess

각 상위 프로세스에 대한 각 상위 파일의 출력에 대한 상위 검사 수를 기간별로 정렬하여 지정합니다.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopScansPerProcess

기간별로 정렬된 상위 프로세스 보고서의 각 상위 프로세스에 대해 출력할 상위 검사 수를 지정합니다.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopScansPerProcessPerExtension

각 상위 확장의 각 상위 프로세스에 대한 출력에 대한 상위 검사 수를 기간별로 정렬합니다.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
-TopScansPerProcessPerFile

각 상위 파일의 각 상위 프로세스에 대한 출력에 대한 상위 검사 수를 기간별로 정렬하여 지정합니다.

Type: Int32
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

더 자세히 알아보고 싶으신가요? Microsoft 기술 커뮤니티: 엔드포인트용 Microsoft Defender 기술 커뮤니티에서 Microsoft 보안 커뮤니티에 참여하세요.