저는 다음 사양의 6년 된 노트북을 가지고 있습니다.
운영 체제: Windows 8.1 Pro 64비트(6.3, 빌드 9600)
제조사 및 모델: SAMSUNG 770Z5E/780Z5E
프로세서: Intel(R) Core(TM) i7-3635QM CPU @ 2.40GHz
RAM: 8GB
최근에는 노트북이 뜨거워지고 팬이 미친 듯이 윙윙거리게 만드는 프로세스가 있는 것 같습니다. 저는 이 프로세스와 소프트웨어(Logitech 마우스 유틸리티)를 3년 넘게 사용해 왔습니다. 유일한 시스템 변경 사항은 분기에 한 번 적용되는 Windows 업데이트였습니다. 1년이 넘도록 아무것도 설치되지 않았습니다.
프로세스는 LogiOptionsMgr.exe입니다. 죽이자마자 노트북은 30초 안에 안정됩니다. 이상한 점은 프로세스가 1% 미만의 CPU를 사용한다고 주장하고 Filemon이 IO(디스크, 레지스트리, 네트워크 등)를 등록하지 않는다는 것입니다.
내가 보고 있는 모든 것은 내가 컴퓨터에 대해 알고 있는 것과 반대됩니다. 프로세스 사용률이 1% 미만으로 표시되는 경우 랩톱이 이와 같이 동작하는 원인이 되어서는 안 됩니다. 그리고 어쨌든 Filemon에 따르면 프로세스는 아무 작업도 수행하지 않는 것 같습니다. 다시 말하지만, 종료하면 노트북이 정상으로 돌아옵니다.
무슨 일이 일어나고 있는 걸까요?
답변1
따라서 Mokubai의 지시에 따라 AMD의 Switchable Graphics 소프트웨어는 Logitech 소프트웨어를 내 3D 그래픽 카드가 고성능 설정으로 작동하도록 요구하는 응용 프로그램으로 잘못 감지한 것으로 나타났습니다.
내 노트북에는 Intel 그래픽과 AMD Radeon 9700 시리즈가 내장되어 있습니다. 저는 모든 Logitech 소프트웨어를 성능보다 배터리 수명을 최적화하려는 소프트웨어로 명시적으로 취급하기 위해 AMD Catalyst 소프트웨어 내에 애플리케이션 프로필을 만들었습니다. 해낸 것 같습니다. 이 결함은 Windows 업데이트 후에 발생하므로 실제로 누구를 비난해야 할지 모르겠습니다.
답변2
iGPU로 마이그레이션한 후에도 LogiOptionsMgr.exe
일정량의 와트를 계속 소비합니다. 아래에서는 문제를 완전히 제거하여 전기 요금을 줄이는 방법을 보여 드리겠습니다.
메모:당신은이것만 가지고 있는 게 아니야 문제(10,000명 이상 (약 34,557 명 )전체적으로):
- 유휴 상태에서 GPU NVIDIA GeForce RTX 3060 Ti(200W)
logioptionsmgr.exe
의 최대 30%를 사용하는 이유는 무엇입니까 ?- Logitech 지원: Logitech Options 높은 GPU 로드 NVIDIA GeForce RTX 20?0 Super의 8%
- 로지텍 지원:
LogiOptionsMgr.exe (UNICODE)
GPU 사용량 NVIDIA GeForce GTX 1070(150와트)의 2‑3%
- GPU 성능을 사용하는 Logitech 마우스 소프트웨어 NVIDIA GeForce 970 GTX(145와트)의 5~10%
실행 시 CPU 사용량이 많아 문제가 있는 사람이 있나요Logioptions.exe
?- Logitech OPTIONS 소프트웨어가 GPU를 잡아먹고 있습니다!!!! NVIDIA GeForce GTX 1070(150와트); T
LogiOptionsMgr.exe
(유휴, 부하): 53‑55°C, 82‑85°C; 미포함: 40°C, 70°C. NVIDIA Titan Xp(250와트)의 21%. - Logitech 소프트웨어 *경고* T
LCore.exe
(유휴): 50°C; 없음: 30°C.
내가 열면프로세스 해커"GPU" 및 "GPU 전용 바이트" 열을 추가하면 제 경우에는 LogiOptionsMgr.exe
GPU의 0.94%(창을 이동할 때 6.19%)와 1.14MB를 사용합니다.
이제 문제(스레드, 호출 스택)를 지역화해 보겠습니다.
- Process Hacker에서:
LogiOptionsMgr.exe
프로세스를 두 번 클릭하고 속성 창에서: 스레드 탭으로 전환합니다. - ▼ CPU 열 기준으로 정렬
- CPU를 가장 많이 사용하는 스레드를 일시 중단해 보십시오. 스레드의 상황에 맞는 메뉴 열기 > "일시 중단" 항목
- Process Hacker의 기본 창에서: 스레드 탭에서 GPU의 로드가 사라져야 합니다
. 스레드 행이 회색으로 바뀌었습니다. - 이제 호출 스택을 볼 수 있습니다(스레드를 두 번 클릭). 제 경우에는 스택이 다음과 같았습니다.
메모:지금은 함수 이름을 무시하세요0, ntdll.dll!NtWaitForSingleObject+0xa 1, KernelBase.dll!WaitForSingleObjectEx+0x9c 2, d3d9.dll!Direct3DCreate9+0x194fe 3, d3d9.dll!Direct3DCreate9Ex+0x17df 4, d3d9.dll!Direct3DCreate9Ex+0x1794 5, d3d9.dll!Direct3DShaderValidatorCreate9+0x1515b 6, d3d9.dll!Direct3DShaderValidatorCreate9+0x98aa 7, d3d9.dll!Direct3DShaderValidatorCreate9+0x167c0 8, d3d9.dll!DebugSetLevel+0x1584e 9, LogiOptionsMgr.exe+0xd4343 10, LogiOptionsMgr.exe+0x94947 11, LogiOptionsMgr.exe+0x1d6184 12, LogiOptionsMgr.exe+0x1dbae3 13, LogiOptionsMgr.exe+0x1dbc8a 14, kernel32.dll!BaseThreadInitThunk+0xd 15, ntdll.dll!RtlUserThreadStart+0x21
d3d9.dll
. 함수 이름은 정확하지 않습니다(아래에서 올바른 이름을 볼 수 있습니다).
다음으로, 코드에서 문제가 있는 부분(위 호출 스택의 #9)을 찾아 LogiOptionsMgr.exe
직접 수정해 보겠습니다. 그런데 제 버전은 LogiOptionsMgr.exe
3.20.35 입니다~ 아니다 취약한.
메모:의 스레드 하나를 일시 중지했음을 기억하십시오 LogiOptionsMgr.exe
.
당신은x64dbg디버거. 경험해 보셨기를 바랍니다. 그렇지 않다면 더 쉽게 작업할 수 있는 몇 가지 설정이 있습니다(옵션 메뉴 > 기본 설정).
- 이벤트탭 > "Break on" — 이 항목을 모두 선택 취소합니다. (나중에 "Entry Breakpoint*" 및 "Attach Breakpoint"를 활성화해 볼 수 있습니다.)
- 예외탭: "범위 추가" 버튼 > 시작:
00000000
, 끝:FFFFFFFF
의 시작하자:
- 파일 메뉴 >붙이다: 선택
LogiOptionsMgr.exe
및 첨부 - 다음에 대한 기호 로드
d3d9.dll
(이 작업은 한 번만 수행됨):- 기호 탭: 왼쪽 패널 > "d3d9.dll" 모듈 > 상황에 맞는 메뉴: "이 모듈에 대한 기호 다운로드"
- 프로그램 코드에서 다음 위치를 찾으세요.
LogiOptionsMgr.exe+0xd4343
(위 호출 스택의 #9):- 스레드 탭(x64dbg)에서 이전에 일시 중단한 스레드로 전환합니다.
1
"Suspend Count" 열이나 TID Process Hacker, dec → "ID" 열 x64dbg, hex 에서 찾으세요.- 그것을 더블클릭하세요
- 당신은 스택의 맨 위에 있습니다. 조금 롤백하십시오.
- 호출 스택 탭: 상황에 맞는 메뉴: "의심되는 호출 스택 프레임 표시"
- 설명 열에서 "d3d9에서 logioptionsmgr....로 돌아가기...."를 찾습니다.
- 그것을 더블클릭하세요
- CPU 탭에서: 위로 스크롤asm이전 지침을 보려면 조금
- 명령어
test
가 현재 선택되어 있습니다(제 경우에는 —test eax,eax
). 그 위에는call
지침이 있습니다 (내 경우에는 —call qword ptr ds:[rax+3C8]
)
- 명령어
- 명령어 에 중단점을 설정합니다
call
. • 왼쪽의 회색 글머리 기호를 클릭하면 → 빨간색으로 변합니다. - 현재(일시 중단된) 스레드 재개 — 스레드 탭: 스레드의 상황에 맞는 메뉴: "스레드 재개"
d3d9.dll
이제 CPU 탭에서 호출되는 의 함수 의 실제 이름을 볼 수 있습니다 .qword [rax+3C8]=<d3d9.public: virtual long __cdecl CBaseDevice::PresentEx(…) __ptr64>
즉 위에 표시된 호출 스택은 다음과 같습니다.- 0,
ntdll.dll!NtWaitForSingleObject+0xa
- 1,
KernelBase.dll!WaitForSingleObjectEx+0x9c
- 2,
d3d9.dll!CBaseDevice::AcquireWriteAccess
- 삼,
d3d9.dll!CBaseDevice::UpdateRenderTarget
- 4,
d3d9.dll!CD3DBase::SetRenderTargetI
- 5,
d3d9.dll!CSwapChain::ResetRenderTargets
- 6,
d3d9.dll!CSwapChain::PresentMain
- 7,
d3d9.dll!CBaseDevice::PresentMain
- 8,
d3d9.dll!CBaseDevice::PresentEx
←PresentEx
←Present
-LogiOptionsMgr.exe
에 싶어현재의우리에게 뭔가를 보여주세요… - 9,
LogiOptionsMgr.exe+0xd4343
- …
- 0,
- 스레드 탭(x64dbg)에서 이전에 일시 중단한 스레드로 전환합니다.
- 프로그램의 이 부분을 살펴보면"스텝 오버" 모드F8
movzx eax,byte ptr ds:[rsi+38]
, 이 스레드가 다음 으로 시작하는 루프에서 회전하고 있음을 알 수 있습니다 .call qword ptr ds:[<&NtUserShowWindow>]
ShowWindow
) 이후 처음으로 돌아갑니다.call qword ptr ds:[<&PeekMessageW>]
루프의 시작 부분에는 루프의 시작/종료 조건이 있습니다.
test al,al
jne logioptionsmgr.13F904520
- 상황에 맞는 메뉴: 조립space
jne
로 교체하다je
… 그리고 F9프로그램 실행을 재개한 다음 다음에 의해 생성된 리소스를CoInitialize
그리고Direct3DCreate9Ex
(위의 asm 참조)이 제대로 릴리스되고 스레드가 종료되며 로그 탭에 다음 레코드가 나타납니다(NVIDIA의 GPU의 경우).
DLL Unloaded: … nvd3dumx.dll
DLL Unloaded: … psapi.dll
Thread … exit
메모:하역psapi.dll
응용 프로그램의 개인 마우스 설정이 작동을 중지(전환)할 것이라고 암시했을 수 있지만 개인 설정은 여전히 작동합니다.
LogiOptionsMgr.exe
패치를 최종적으로 커밋하기 전에 패치가 실행될 때 올바르게 작동하는지 확인해야 합니다 .
- 사전 준비:
- 패치 저장 - CPU 탭: asm 보기의 컨텍스트 메뉴: 패치 Ctrl+ P: 내보내기 버튼; 내 경우(v3.20.35의 경우) 패치 파일의 내용은 다음과 같습니다
LogiOptionsMgr.1337
.>logioptionsmgr.exe 00000000000D4317:85->84
call qword ptr ds:[<&NtUserShowWindow>]
(위에서 언급한) 에 중단점을 설정합니다 .
- 패치 저장 - CPU 탭: asm 보기의 컨텍스트 메뉴: 패치 Ctrl+ P: 내보내기 버튼; 내 경우(v3.20.35의 경우) 패치 파일의 내용은 다음과 같습니다
- 준비:
- 다시 시작
LogiOptionsMgr.exe
— 디버그 메뉴 > 다시 시작 Ctrl+F2 - 재시작 후 에서 프로그램 실행이 멈췄어야 하는데
call qword ptr ds:[<&NtUserShowWindow>]
, 보시다시피 패치(jne
→je
)가 자동으로 적용되지 않아서 수동으로 적용합니다. — Ctrl+ P: Import 버튼
- 다시 시작
- 확인하다코드 실행 경로(루프를 건너뛰어야 함) — "Step over" F8(또는"애니메이트 오버", 또는 사용트레이싱)
- 프로그램 실행 재개 — "실행" F9; 코드 실행 경로를 다시 반복해야 합니다.
- 자원이 공개됩니다
- 스레드가 종료됩니다(종료).
- 해당 기록이 로그 탭에 나타납니다.
패치를 커밋하려면 "패치" 대화 상자를 열고 Ctrl+ P다시 "패치 파일" 버튼을 엽니다(패치된 내용을 LogiOptionsMgr.exe
다른 위치에 임시로 저장한 다음 원본을 교체합니다).
디버거를 분리하는 것을 잊지 마세요(파일 메뉴 >분리하다) 또는 즉시 프로세스를 종료합니다 LogiOptionsMgr.exe
(디버그 메뉴 >닫기 Alt+F2) 파일을 교체하기 전에 LogiOptionsMgr.exe
.
메모:위의 과정에서 미니덤프는 minidump\dump-*_*.dmp
다음과 함께 디렉토리에 나타날 수 있습니다. LogiOptionsMgr.exe
삭제해도 안전합니다.
메모:일반적인 경우에는 을 교체한 후 로그오프 + + , + / 로그인을 통해 LogiOptionsMgr.exe
상위( )를 다시 시작하는 것이 좋습니다 .LogiOptions.exe
CtrlAltDeleteAltL