Problem z Page Faults

0

Witam,
Pierwszy mój post 😊,
Mam poważny problem z generowaniem „Virtual Memory Page Faults” przez moją mini aplikacje, walczę z tym od 2 dni nie mam już siły, prosta klasyczna aplikacja okienkowa.
https://techcommunity.microsoft.com/t5/ask-the-performance-team/the-basics-of-page-faults/ba-p/373120

Uruchamiam aplikacje w dwóch stylach okien:

Pierwszy styl zwykłe okno (WS_EX_OVERLAPPEDWINDOW | WS_EX_APPWINDOW )
screenshot-20211230182731.png
Tu nie generują się Page Faults.

Drugi styl ** (WS_EX_LAYERED | WS_EX_TOPMOST) **
screenshot-20211230182753.png

Na tym stylu masowo generują się Page Faults ,ale tylko w przypadku kiedy ruszam myszką nad okienkiem (w przeciwieństwie do przypadku pierwszego)
Sprawdziłem wiadomości docierające do aplikacji nie dostrzegłem żadnych nieprawidłowości.
Nic w kodzie nie zmieniam poza stylem okna, dodatkowo wiadomości jakie odbiera okno podczas ruchu myszki nad nim to:
WM_SETCURSOR, WM_MOUSEMOVE, WM_NCHITTEST, nie jest wywoływany **WM_PAINT **podczas ruchu myszki nad oknem

Ciężko opisać wszystko w jednym poście, jeśli ktoś byłby skory do pomocy (discord/Teams/etc) łatwiej będzie na zdalnym pulpicie + fonia

Pozdrawiam, Redzik

0

To, że program generuje page faults w trakcie działania jest normalne, czy masz jakiś konkretny problem w związku z tym?

0

Olej.
Ile masz RAMu i czy system nie jest zamulony dużą ilością uruchomionych aplikacji a brakiem pamięci?

0

Hej dzięki za odpowiedzi,

@mad_penguin
Może nie konkretny ale wszelka wiedza w temacie głównie w celach edukacyjnych

Oczytałem się o zasadzie działania z jakiego powodu PF są generowane,
jedno co nie daje mi spokoju dlaczego zwykłe okno ich nie generuje, natomiast Layered tak, co jest przyczyną ?

Co ten nieszczęsny OS robi podczas przejazdu myszką nad oknem WM_MOVE ?
prawie żadnego wpływu na aplikacje to nie ma pod względem wydajności jednak nie daje mi to spokoju

@Azarien
większość osób mówi, że nie jest to czym należy się przejmować,

Wyłączyłem wszystkie VM, WSL, DB, sporo dostępnego Ram-u zajęty w 30%,

Platforma na której pracuje:
Windows 10 pro 64bit ver 19043.1415

  • AMD Ryzen 7 3800X 8/16
  • 32 GB RAM ddr4 2666
  • Dysk systemowy 500GB WDS500G3X0C-00SJG0 Black SN750 NVMe PCIe M.2 500GB

Testowałem apke również na

  • Windoows serwer 2016 48gb ddr3 - ten sam efekt są PF

Dzięki za odpowiedzi, będę dalej z tematem walczył w celach edukacyjnych .

Pozdrawiam, Redzik

2

Ten "Page fault" jest w części "Virtual Memory". To nie jest związane z błędem zarządzania pamięci w aplikacji (wtedy "page fault" prowadzi to crash-a procesu).
W ten sposób działa pamięć wirtualna.
Blok pamięci dla procesu jest zapisywany na dysku, a pamięć wraca do sytemu.
W momencie kiedy proces próbuje uzyskać dostęp do adresu, gdzie zmapowana byłą ta pamięć, system podejmuje akcję w celu odtworzenia pamięci.
Najpierw ponieważ wskazany adres jest pusty, system dostaję powiadomienie o błędzie "page fault" (nie ma strony pod tym adresem).
System wstrzymuje proces, blok pamięci wczytywany z dysku i mapowany pod wskazanym adresem, a na koniec proces jest normalnie wznawiany.

1 użytkowników online, w tym zalogowanych: 0, gości: 1