4.03.2026

poolmon, bellek sızıntısı ve WDK

Görev yöneticisinin bellek sekmesinde, sağ alt köşede yer alan bir "disk belleği olmayan havuz" (non paged pool) bölümü var. Bu bölüm, kullanıcı bellek harcamalarının dışında sürücü ve sistem bileşenlerinin kullandığı ve hiçbir zaman diske (sanal bellek) yazılmayacak miktarı gösterir.

Ekran görüntüleri, benim yaşadığım sorunlu bilgisayara ait değil.


Bu değerin normal bir bilgisayarda 300-400 MB civarında olması beklenir. Ama bir bilgisayarda bu 1,6 GB'ı bulmuştu. Bu bir bellek sızıntısı (memory leak) mı? Bir sürücü işletim sisteminden sürekli bellek talep edip, bunları hiçbir zaman boşaltmazsa bellek sızıntısı olur. İncelemek gerek.

Bu tür durumlarda poolmon kullanılabilir. Bu araç, sürücülerin diske yazılmayan bellek kullanımlarını inceler. Her alanın doğrudan hangi bileşen/süreç tarafından kullanıldığını görmek mümkün değil, ama talep edilen alanlar için bir etiket kullanılır. Bu etiketten şişkin alanın hangi bileşen/süreç ile ilgili olduğu bulunabilir. Poolmon'u indirmek için Windows Driver Kit'i indirmek gerek. Bu kit, başka bileşenlerle de gelir. wdksetup.exe'yi çalıştırdıktan sonra buna göre seçenekleri işaretlemek gerek.

WDK ile birlikte poolmon'u kurduktan sonra çalıştırınca (komut satırından) aşağıdaki gibi bir çıktı verir.

Sütunları inceleyelim.

Tag: Etiket. Alanın hangi sürücü ile ilgili olduğunun anlaşılmasını kolaylaştırmak için.

Type: Rezervasyon tipi. Paged (diske yazılabilecek şekilde rezerve edilen bellek alanı) veya Nonp (diske yazılmayacak şekilde rezerver edilen bellek alanı). Benim durumum için önemli olan alanlar Nonp olanlar.

Allocs: Bellek talep sayısı. Kaç kez rezervasyon yapıldığını gösteriyor.

Frees: Kaç kez rezerve edilen alanların serbest bıraklıdığını (işletim sistemine iade) gösteriyor.

Diff: Allocs ve Frees arasındaki fark; yani rezerve edilip henüz serbest bırakılmamış alan sayısı. Dikkat, miktar değil.

Bytes: İlgili etiketin toplam aktif kullandığı diske yazılmayan bellek alanı.

Per Alloc: Yapılan işlemlerin ortalaması.

Benim durumum için "b"ye basarak Bytes alanına göre sıralamak faydalı oldu. Bazı klavye kısayolları:

p : Verileri type alanına göre süz (sadece Paged, Nonp veya ikisini de içerecek şekilde)
e : Pencerenin altında toplamları göster/gizle (varsayılan kapalı)
a : Allocs alanına göre sırala
f : Frees alanına göre sırala
d : Diffs alanına göre sırala
m : Per Allocs alanına göre sırala
b : Bytes alanına göre sırala

Peki bunu gördük, ne yapabiliriz? Elimizden çok fazla şey gelmiyor. Yapılabilecek şeyler, görüntülenen etiketin hangi sürücüye ait olduğunu bulmak, sonrasında bu sürücüyü güncellemek ve güncel sürücünün bellek sızıntısı yapmayacağını ummak.

Benim durumumda görüntülenen etiket, ismc'ydi. Bu da Intel Rapid Store Technology (RST) ile ilgiliydi. Sorun çözme adımları olarak önce ilgili event tracing'i bilgisayar açıldıktan sonra devre dışı bıraktım.

logman stop IntelRST -ets

ETW içindeki veri kaynaklarını inceledim.

logman query -ets

Intel ile ilgili sürücüleri listeledim

driverquery /v | findstr /i

Hiç biri faydalı olmadı. Aynı sorundan şikayetçi kaç kişi var acaba?

İçinde ismc etiketi geçen sürücüleri aramak için şöyle bir komut önerilmiş.

findstr /m /s /l ismc *.sys

Bu aslında metin dosyalarının içinde ismc anahtar kelimesini arayan bir komut. Bunun powershell eşdeğerini denemek istedim. 

dir *.sys -rec -ea silent | sls ismc | select path

Konuyu biraz saptırdım ama yukarıdaki eşdeğer, asıl komuttan daha fazla sayıda çıktı üretti. Bunun sebebi findstr'nin unicode desteğinin olmaması. sls (Select-String) unicode desteğine sahip olduğu için daha fazla dosya bulur.

Daha ileri seviye bir teknik için, superuser.com üzerinde 2015'te sorulan şu soruya magicandre1981 tarafından verilen cevap incelenebilir.

Uzak bir bilgisayardaki  "disk belleği olmayan havuz" değerine ulaşmak istedim. Bunun için iki seçenek var. Performans sayaçları (performance counters) ve WMI (ya da yeni adıyla CIM) sorguları.

Performans sayaçları konusu biraz karışık. Dile göre farklılık gösterebiliyor. Örnek olarak uzak bilgisayar İngilizce yerelleştirmeye sahipse bu sayaç değerini okumak için.

(Get-Counter -Computername uzakpc "\Memory\Pool Nonpaged Bytes").CounterSamples.CookedValue

yeterli olurken, Türkçe bir bilgisayarda 

(Get-Counter -Computername uzakpc "\Bellek\disk belleği olmayan havuz bayt sayısı").CounterSamples.CookedValue

çalışmadı. Onun yerine terminalden

Invoke-Command -Computername uzakpc {Get-Counter "\Bellek\disk belleği olmayan havuz bayt sayısı").CounterSamples.CookedValue}

ile sonuca ulaştım. Ancak bu satırı kopyalayıp bir metin dosyasına kaydedip ps1 uzantılı bir betik dosyası oluşturduğumda aldığım hata

Internal performance counter API call failed. Error: c0000bb9.
    + CategoryInfo          : InvalidResult: (:) [Get-Counter], Exception
    + FullyQualifiedErrorId : CounterApiError,Microsoft.PowerShell.Commands.GetCounterCommand
    + PSComputerName        : uzakpc 

oldu. Bir sorun var. O da dosyayı UTF-8 olarak kaydetmek. Kodlamayı ANSI olarak değiştirince sorun çözüldü. Şu sayfada powershell'in ps1 dosyalarında UTF-8 kodlamasını da kabul ettiği, sorunun sadece bazı karakterlerin kopyala yapıştır sırasında yanlış yerleştirildiğinden bahsedilmiş. Bu konu henüz incelenmedi.

İkinci yöntem olarak CIM sorgusu ile de ilerleyebilirdim.

(Get-CIMInstance -Computername uzakpc Win32_PerfFormattedData_PerfOS_Memory).PoolNonpagedBytes

Ama ilginç bir şekilde ilk kullanımda bu değeri dönmesi uzun sürüyor (+1 dakika). 

---

https://woshub.com/huge-memory-usage-non-paged-pool-windows/
https://community.intel.com/t5/Rapid-Storage-Technology/Non-Paged-pool-memory-usage-too-high/m-p/1243440
https://www.tenforums.com/performance-maintenance/101582-very-high-ram-usage-all-time-w10.html
https://community.intel.com/t5/Rapid-Storage-Technology/Non-Paged-pool-unusually-high-ismc-non-paged-pool/td-p/1288935
https://www.tenforums.com/performance-maintenance/168382-high-ram-usage-non-paged-pool-size.html

3.03.2026

Ağ kabuk komutlarının konum erişimi istemesi

Windows'da netsh komutunu kullanarak yapılan ağ taraması sırasında şöyle bir mesaj çıkıyor.

Interface name : Wi-Fi
Network shell commands need location permission to access WLAN information. Turn on Location services on the Location page in Privacy & security settings.

Here is the URI for the Location page in the Settings app:
ms-settings:privacy-location
To open the Location page in the Settings app, hold down the Ctrl key and select the link, or run the following command:
start ms-settings:privacy-location

Or, to open the Location page from the Run dialog box, press Windows logo key + R, and then copy and paste the URI above.

The requested operation requires elevation (Run as administrator).

Varsayılan olarak uygulamaların benim kontolüm dışında konum bilgime erişmesine ve paylaşmasına izin vermiyorum. Bu sebeple yukarıdaki gibi bir mesaj bana ilginç gelirdi; alt tarafı bir wifi taraması yapmak istiyorum, program neden benim konum bilgilerime erişmek istiyor diye düşünürdüm.

Bu aslında Android üzerindeki wifi tarama araçlarında da oluyordu. Bu duruma bakış açım da sanki "işletim sistemi (Windows veya Android) benim yapmak istediğim kablosuz tarama işlemlerinde konum bilgimi okuyup paylaşacakşeklinde olurdu. Yanlış bir bakış açısıymış.

Burada aslında şu oluyor; kullanıcı veya bir program ağ kabuk komutları aracılığı ile tarama yaparsa bu aslında dolaylı olarak konum bilgime de sahip olabilecekleri anlamına gelir. Bu sebeple bu gibi işlemlerin bir yetkilendirmeye tabi olmasını istemişler. Yani aslında yukarıdaki gibi bir mesaj bana sadece "bu işlemi yapmaya yetkin yok" diyor. Yapmak için verilmesi gereken yetki konum erişimi yetkisi.

27.02.2026

Kablosuz erişim noktası bilgilerini bulmak (Linux)

Şuradaki işlemlerin eşdeğerlerini Linux'ta yapmak istiyorum. Olasılıklardan biri nmcli kullanmak. nmcli, network manager olarak bilinen çoğu linux dağıtımında kurulu gelen ağ bağlantılarını yönetmek için kullanılan sistemin komut satırı (ncurse) bileşeni.

Aşağıdaki komut, bilgisayardaki ağ arayüzlerinin durumlarını gösterir. Ethernet arayüzleri için kablonun takılı olup olmadığını, wifi için ise mevcut kablosuz bir ağa bağlı olup olmadıklarını gösterir.

nmcli dev status

Şu komut ise bilgisayarın daha önce bağlanmış olduğu kablosuz ağları gösterir. Bu, Windows'daki hatırlanan kablosuz ağ profillerinin karşılığıdır.

nmcli con show

Bilgisayardaki arayüzlerin listesini almak için

nmcli dev

ve hatta daha da ayrıntılı görebilmek için

nmcli dev show

kullanılabilir. Örnek bir çıktı şöyle olur:

GENERAL.DEVICE:              wlp4s0
GENERAL.TYPE:                wifi
GENERAL.HWADDR:              <mac-address>
GENERAL.MTU:                 1500

GENERAL.STATE:               100 (bağlandı)
GENERAL.CONNECTION:          <ssid>
GENERAL.CON-PATH:            /org/freedesktop/NetworkManager/ActiveConnection/2
IP4.ADDRESS[1]:              192.168.1.5/24
IP4.GATEWAY:                 192.168.1.100
IP4.ROUTE[1]:                dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 600
IP4.ROUTE[2]:                dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 600

IP4.DNS[1]:                  8.8.8.8
IP4.DNS[2]:                  1.1.1.1

IP6.ADDRESS[1]:              <ip6-address>
IP6.GATEWAY:                 --
IP6.ROUTE[1]:                dst = fe80::/64, nh = ::, mt = 1024

Arayüzlerden birini seçip sadece onunla ilgili ayrıntıları görebilmek için

nmcli dev show wlp4s0

Etrafımızdaki kablosuz ağların listesini görmek için

nmcli dev wifi

Bu komutun çıktısında asterisk karakteri "*" ile gösterilen satır, bizim bağlı olduğumuz ağdır. Bu satırın BSSID sütununda bağlı olduğumuz erişim noktasının MAC adresi benzeri kimliği yer alır.

 

25.02.2026

Kablosuz erişim noktası bilgilerini bulmak (Windows)

Bulunduğumuz yerdeki kablosuz ağların listesini komut satırından görmek için

netsh wlan show networks

SSHD 1 : <ağ-1>
    Network type   : Infrastructure
    Authentication : WPA2-Personal
    Encryption     : CCMP  

Bu ağlardan birine bağlanmak için

netsh wlan connect ssid="asdf" name="asdf"

Veya bağlı olan ağ ile bağlantıyı kesmek için

netsh wlan disconnect

Bilgisayarımdaki kablosuz bağlantı arayüzü (bir ağa bağlıysa o ağ) ile ilgili bilgileri görüntülemek için 

netsh wlan show interfaces

Name : Wi-Fi
Description : Intel(R) Wi-Fi 6E AX211 160MHz
GUID : <guid>
Interface type : Primary
State : connected
SSID : <ağ-adı>
AP BSSID : <MAC-adresi>
Band : 5 GHz
Connected Akm-cipher : [ akm =..., cipher = ... ]
Network type : Infrastructure
Radio type : 802.11ac
Authenticate : WPA2-Personal
Cipher : CCMP
Connection mode : Auto Connect
Receive rate (Mbps) : 866.7
Transmit rate (Mbps) : 650
Signal : 92%

Rssi : -45
Profile : <profil-adı>
    Qos MSCS Configured : 0
    Qos Map Configured : 0
    QosMap Allowed by Policy : 0

Kablosuz arayüzün yeteneklerini görüntülemek için

netsh wlan show wirelesscapabilities

Firmware Version : D4.05
Network monitor mode : Not supported
Promiscuous Mode : Not Supported
MAC Randomization : Supported
WPA3 SUITE-B Authentication : Supported 

Çok uzun bir çıktısı var, sadece belli başlı satırları aldım. Sürücümüzün yeteneklerini görmek için

netsh wlan show drivers

Interface name: Wi-Fi

    Driver                    : Intel(R) Wi-Fi 6 AX201 160MHz
    Vendor                    : Intel Corporation
    Provider                  : Intel
    Date                      : 21.07.2025
    Version                   : 23.160.0.4
    INF file                  : oem279.inf
    Type                      : Native Wi-Fi Driver
   
Radio types supported     : 802.11b 802.11g 802.11n 802.11a 802.11ac 802.11ax
    FIPS 140 mode supported   : Yes
    802.11w Management Frame Protection supported : Yes
    Hosted network supported  : No
    Authentication and cipher supported in infrastructure mode:
                                Open             None
                                Open             WEP-40bit
                                Open             WEP-104bit
                                Open             WEP
                                WPA-Enterprise   TKIP
                                WPA-Enterprise   CCMP
                                WPA-Personal     TKIP
                                WPA-Personal     CCMP
                                WPA2-Enterprise  TKIP
                                WPA2-Enterprise  CCMP
                                WPA2-Personal    TKIP
                                WPA2-Personal    CCMP
                                Open             Vendor defined
                                WPA3-Personal    CCMP
                                Vendor defined   Vendor defined
                                WPA3-Enterprise 192 Bits GCMP-256
                                OWE              CCMP
                                WPA3-Enterprise  CCMP

    Number of supported bands : 2
                                2.4 GHz [ 0 MHz - 0 MHz]
                                5 GHz [ 0 MHz - 0 MHz]

    IHV service present       : Yes
    IHV adapter OUI           : [00 00 00], type: [00]
    IHV extensibility DLL path: C:\WINDOWS\system32\somefile.dll
    IHV UI extensibility ClSID: <clsid>
    IHV diagnostics CLSID     : <clsid>
    Wireless Display Supported: Yes (Graphics Driver: Yes, Wi-Fi Driver: Yes)

Var olan bir profili dosyaya yedeklemek için

netsh wlan export profile name="BWN" key=clear filename=C:\asdf\x.xml

Dosyaya yedeklediğimiz bilgilerden bir profil oluşturmak için

netsh wlan add profile filename=C:\asdf\x.xml #user=all

 

24.02.2026

Windows Web Exprience Pack

Windows 11'de ekranın sol alt köşesinde gözüken hava durumu ve benzeri bilgileri gösteren araç, hiç kullanmadığım bir bileşen.

winget uninstall "Windows Web Experience pack"

kullanarak kaldırdım.

18.02.2026

Linux sunucuyu kim yeniden başlatmış veya kapatmış

Yetkili bir kullanıcı tarafından yeniden başlatılan sunucunun journalctl loglarında şöyle bir satır görünür:

Aug 19 08:38:16 bilgisayaradi systemd-logind[1235]: The system will reboot now!

Burada bilgisayaradi ile gözüken alan kullanıcı adı değil, bilgisayar adı.

Bu olay kaydı systemd-logind birimi tarafından oluşturulmuş. Bu birim tarafından oluşturulan diğer kayıtları da görmek için

journalctl -u systemd-logind

kullanılabilir. Faydalı diğer kayıtlar şunlar olabilir: 

Nov 13 04:44:48 bilgisayaradi systemd-logind[1009]: The system will power off now! 
Nov 13 04:44:48 bilgisayaradi systemd-logind[1009]: System is powering down. 
journalctl -g "Linux version"

Burada gözüken tarih ve saatten +/- birkaç 10 saniye etrafını kısıtlayarak yapılacak bir aramada aşağıdaki regex ile kullanıcı adına erişilebilir.

journalctl --since "Nov 13 04:44:00" --until "Nov 13 04:45:00" | grep -e "Session [[:digit:]] of User"
Nov 13 04:44:47 bilgisayaradi systemd[1]: Stopping session-2.scope - Session 2 of User metin... 
Nov 13 04:44:47 bilgisayaradi systemd[1]: Stopped session-2.scope - Session 2 of User metin.

 Ayrıca sunucumuzun yeniden başlama olaylarını listelemek için de

journalctl --list-boots

komutu kullanılabilir. Sentetik bir yöntem olarak, journalctl kayıtlarında ilk yer alan 

Aug 14 14:53:07 arsiv kernel: Linux version 6.8.0-71-generic (buildd@lcy02-amd64-053) (x86_64-linux-gnu-gcc-13 (Ubuntu 13.3.0-6ub

gibi bir ifadeyi de arayabilirdim:

journalctl -g " Linux version "

 

17.02.2026

Windows'da kablosuz ağlar

Şifresini girerek bağlandığımız kablosuz ağa ait şifreleri Windows hatırlar. Hatırlanan şifreleri ona sorup öğrenebiliriz.

Önce hangi kablosuz ağları hatırlıyor diye soralım.

netsh wlan show profile
Profiles on interface Wi-Fi:

...

User profiles
-------------
    All User Profile     : GalaxyAxx
    All User Profile     : MisafirAgi
    All User Profile     : P40

Bu örnekte bilgisayar 3 tane kablosuz ağı hatırladı. Her ağın ayrıntılarını, şifreyi gösterecek şekilde görmek için

netsh wlan show profile "GalaxyAxx" key=clear

kullanabiliriz. Yüksek ihtimalle bu bilgilerin arasında şifre de olur. Security settings başlığının altında Key Content bilgisini sadece göstermek için

netsh wlan show profile "GalaxyAxx" key=clear | find /i "key content" 

Key Content : CokGizliParola