Generating Fibonacci Numbers

Kasım 23, 2018

Recently, in a contest to find the Fibonacci numbers, 40 year-old BBC Micro machine came first with 7000 numbers in 15 seconds. So, I decided to do a similar thing in Powershell. The following code generates Fibonacci numbers in an infinite loop. Till I break it with CTRL-C, it created 10087 numbers in 15 seconds (i5 processor; 2450m).

[bigint]$first=0
[bigint]$second=1
[bigint]$result=0
[bigint]$sayi=0
write-host $sayi, $result
$sayi=$sayi+1
write-host $sayi, $second
do {

$result=$first+$second
$sayi=$sayi+1
write-host $sayi, $result
$first=$second
$second=$result
}
while ($true)

I tried to do the same in the classical command prompt but its numbers are limited to 32 signed integer so it generates only 46 numbers, then it overflows and generates negative numbers! The code is as the following:

set first=0
set second=1
set result=0
set order=0
echo %order%,%result%
set order=1
echo %order%,%second%
:loop
set /a result=first+second
set /a order=order+1
echo %order%,%result%
pause
set /a first=second
set /a second=result
goto :loop

It will be good to do similar things in the other command line environments.

You can also read the following article:
https://muratyildirimoglu.wordpress.com/2018/10/11/how-many-users-can-be-created-in-windows/

Reklamlar

Laiklik nasıl bir şeydir? Amerika’ya bakalım

Kasım 23, 2018

Resimde görülen 15 metre yüksekliğindeki haç şeklindeki anıt Amerika’da Maryland eyaletinin Bladensburg kentinde yer alıyor.

Çoğunluğu Hristiyan olan Amerika için normal görülebilecek bir anıt.

Ama bu anıt mahkeme kararıyla yıkılacak. Çünkü mahkeme anıtın laikliğe aykırı olduğuna hükmetti.

Anıt, Birinci Dünya Savaşı’nda ölen 49 hemşerileri için 1925 yılında dikilmiş.

2014 yılında “Tanrısız da iyi olabiliriz” sloganını savunan Amerikan Hümanist Birliği bu anıtın kaldırılması için dava açmış.

Birlik, anıtın yalnızca savaşta ölen Hristiyanları onurlandırdığını düşünüyor, bunun da anayasaya aykırı olduğunu düşünüyor.

Amerikan anayasası dinle devlet işlerini ayırmada çok hassas; kurucu babaların deyimiyle dinle devlet arasına bir duvar çekiliyor.

Mahkeme Birliği haklı bulmuş.

Kararında anıtın devlet desteğiyle yapıldığı ifade ediliyor ve devletin Hristiyanlığı desteklemesi gibi bir görüntün ortaya çıktığı, bunun da yanlış olduğu vurgulanıyor.

Çoktandır unuttuğumuz laiklik böyle bir şey.

Şu yazıyı okumakta da yarar var:

https://muratyildirimoglu.wordpress.com/2016/10/08/laiklik-nedir-nasil-bir-seydir/

IBM’in 50 Qbitlik kuantum bilgisayarı

Kasım 20, 2018

Aşağıdaki resimde IBM’in kuantum bilgisayarı görülüyor.

Sistem bir avizeye benziyor.

Bilgisayarın kendisi resimde, avizenin altında yer alan silindir kap.

Tüm yapı soğutmaya dayanıyor. Soğutmada Helyum kullanılıyor.

Avizenin üst kısmı 3-4 Kelvin derecesine kadar soğutulurken aşağıdaki silindir kabın sıcaklığı çalışma süresince 0.15 milikelvin’e düşürülüyor!

Bu sıcaklık bütün evrendeki en düşük sıcaklık!

Bu sıcaklık kolay kolay sürdürülebilen bir sıcaklık değil. Bu yüzden bilgisayar ancak 100 milisaniye (saniyenin onda biri) çalışabiliyor!

Bu durum kuantum bilgisayarların tüm sorunlarını da gösteriyor.

Kuantum bilgisayarlar kolay kolay yaygınlaşamaz, hele hele bir politikacının iddia ettiği gibi, 2020’de cep telefonlarına giremez.

Sağ ve sol politikalar

Kasım 13, 2018

Trump Amerikan firmalarının yurtdışında fabrika açmasına, üretimi yurtdışına taşımasına kızıyor.

Bu yüzden Ford firması Meksika’da açacağı fabrikayı iptal etmek zorunda kaldı.

Ford’un fabrikası açılabilseydi ne olacaktı?

Amerikan firması olan Ford üretimi ucuza mal edebilecekti ve Güney Amerika piyasasına yakın olacaktı.

Binlerce Meksikalı bu fabrikalarda çalışacak, Amerika’ya göç etmek isteyen Meksikalıların sayısı azalacaktı.

Ama Trump burnunun ucundan ilerisini göremiyor bu konuda.

Sağcıların buna benzer uygulamalarına İngiltere’de de rastlanıyor.

Avrupa Birliği’nden çıkış referandumu ve sonrası bütünüyle sağcıların işi.

(Gerçi İşçi Partisi’nin kaçak güreşini de unutmayalım; onlar da Avrupa Birliği’nden çıkışın yanlışlığından çok çıkış işlemlerinin beceriksizce yürütülmesini eleştiriyorlar.)

Halbuki Avrupa Birliği dönemi İngiltere’nin en zengin dönemlerinden birisi.

Sağcıların gözünde büyüyen yıllık 1 milyar pound civarı katkı İngiltere’nin Avrupa Birliği pazarına rahat girişinin maliyetiydi aslında.

Ama aynen Trump gibi İngiltere’deki sağcılar da bu paraya ve karar mekanizmalarında etkili olamamalarına odaklanıp Avrupa Birliği’nden çıkma hatasına düştüler.

Sağcıların son uygulamalarından birisi, İngiltere’nin yurtdışındaki suçları engellemek için harcadığı yıllık 30 milyon pounda göz dikmek.

Yetkililer bu harcamayı yaparak suçun İngiltere’ye ulaşmasını beklemeden müdahale edebilme fırsatını yakaladıklarını söylüyor ama sağcılara bu açıklama yetmiyor.

O para, birkaç trilyon dolarlık İngiltere’nin milli gelirinde bir damla bile olmayan o para, İngiltere’de kalmalı.

Öte yandan, hem ABD’de hem de İngiltere’de ekonominin sağcılar döneminde iyi gittiği de söylenebilir.

Amerika Trump yönetimi altında, daha önce görülmemiş büyüme oranlarına kavuşuyor, işsizlik de yine rekor oranlarda düşük çıkıyor.

İngiltere’de sağcı hükümetler 2008 krizinden bu yana kemer sıkma politikaları uyguluyor ve bu politikalar sonuç da veriyor.

İngiltere için iyi sayılabilecek büyüme oranları ve yine rekor düzeyde düşük işsizlik oranlarına sahipler.

Amerika’da ve İngiltere’de solcu politikalar ekonomi alanında ne kadar çuvallıyorsa sosyal alanda o kadar iyiler.

İngiltere’de göçmenler genelde İşçi Parti’sine oy veriyor çünkü sağ partiler onları düşman olarak görüyor.

İşçi Partili Tony Blair’in 10 yıllık iktidar dönemi barışın, refahın, hoşgörünün baskın olduğu yıllar olarak anımsanıyor.

Kuzey İrlanda’da on yıllardır süren terör Blair zamanında, her kesimin benimsediği bir anlaşmaya sona erdi

Türkiye’de böyle: Sol partiler kesinlikle ekonomiden anlamıyor. 1950’den bu yana ekonomiyi ve Türkiye’yi dönüştüren partiler sağ partiler oldu.

Ama sağ partiler iktidara gelince de dinsel ve toplumsal hoşgörüsüzlük tavan yapıyor. Ülke gerildikçe geriliyor.

Sol partilerin kısa iktidar dönemleri, ekonomik olarak başarısız olsalar da, kesinlikle daha hoşgörülü ve barışçı bir dönem oluyor.

Bu gerçekler neyi gösteriyor?

Türkiye’de de, dünyada da, sağ ve sol tanımlarından sıyrılıp yeni bir politikaya yönelmek gerek.

Ekonomik olarak serbest piyasa ve özel sektör temelli politikalar olmalı.

Sosyal olaraksa düşmanlık yaratmayan, toplumu germeyen, herkesi kapsayan, çağa uygun, hoşgörülü politikalar gerek.

Oylarıyla iktidarı belirleyen sıradan kişiler olarak, sağ ve sol yaftalarını aşıp bu türlü politikalar istemeliyiz.

Akit’ten rezil bir gazetecilik örneği daha

Ekim 26, 2018

Avrupa bize düşman, bizi istemiyor

Ekim 21, 2018

Almanya, Fransa ve İngiltere ortak bir açıklama yaptılar, Cemal Kaşıkçı’nın öldürülmesini protesto ettiler ve şöyle dediler:

" İfade özgürlüğü ve basın özgürlüğü bizim için anahtar önemdedir.

Gazetecilerin tehdit edilmesi, saldırıya uğraması ve öldürülmesi bizim açımızdan kabul edilemez şeylerdir."

Şimdi Ak Parti dönemini bir gözden geçirelim:

FETÖ döneminde, Mustafa Balbay başta olmak üzere çok sayıda gazeteci sudan gerekçelerle yıllarca hapis yattı.

FETÖ sonrasında Ahmet Hakan saldırıya uğrayıp dövüldü, Can Dündar mahkeme önünde silahlı saldırıya uğradı, Hürriyet gazetesi Ak Partililer tarafından basıldı.

Avrupa bizi neden istemiyor diye sorarken bunları anımsamak lazım.

Yılmaz Özdil’in “Mustafa Kemal” kitabı

Ekim 15, 2018

Yılmaz Özdil sevilen bir yazar.

Özdil gazeteci olduğunu iddia ediyor ama değil.

Gazetecilik adına bir şey yaptığı söylenemez.

Son kitabı “Mustafa Kemal” onun biyografi yazarlığını da beceremediğine bir kanıt.

Dahası, anlatılmayan Atatürk’ü anlatmak amacıyla yola çıktığını söylüyor ama Atatürk’ü hiç anlamamış gibi.

Kitabın başları sayılacak kısımlarında Atatürk’ün Sofya günleri ve Çanakkale Savaşı yer yer alıyor.

Yer alıyor ama anlamsız bir şekilde.

Örneğin, Atatürk’ün Sofya’dayken operalara gittiğini söylüyor.

Bu kadar.

Ama opera hakkında bir arkadaşına söylediği bir söz var, o söz onun Sofya günlerinden ne kazandığını çok güzel gösterir:

“Operayı görünce Bulgarların Balkan Savaşı’nda bizi neden yendiklerini anladım. Böyle bir organizasyonu yapabilenler savaşta da başarılı olur.”

Bu bilgi Özdil’in kitabında yok.

Halbuki Atatürk Türkiye’de batı müziğini sevdirmeye, yaygınlaştırmaya çalışırken yapmaya çalıştığı şeylerden birisi, müziğin yanı sıra bu organizasyon bilincini de insanlarımıza kazandırmaktı.

Geleneksel Türk müziği halen güzel sesli birisinin söylediği şarkı-türküleri dinlemek şeklinde.

Hatta bu yüzden gittiği yerlerdeki müziği tanımak isteyen, oralardan şarkı toplayan müzik adamı Bela Bartok bizim için “Topluca şarkı söylemeyi bilmeyen insanlar” diyecekti.

Böyle olması geleneksel müziğimizin kötü olduğu anlamına gelmiyor. Yalnızca geleneksel müziğin yeni yorumlarına ve geleneksel müzikle ilgisi olmayan batılı müziğe de önem vermek gerekiyor. Çünkü batılı müzik bize müzik dışında da şeyler kazandırıyor.

Atatürk böyle düşünüyordu ve bu düşüncesinin bir bölümü Sofya’da ateşe militer olarak göreve yaparken oluştu.

Özdil yine Sofya günleri için özensiz ifadeler de kullanıyor. Şöyle diyor:

“Miti’ye aşık olmuştu. Kavuşmaları imkansızdı. Bavullarını topladı. Kırık bir kalple Sofya’dan ayrıldı.”

Miti kim? Yok. Aşk ne zaman başladı, nasıl gelişti. Yok. Çalakalem yaz, bunu da anlatılmayan Atatürk’ü anlatmak olarak pazarla.

Hemen sonra da Atatürk’ün Çanakkale Boğazı’na atandığını söylüyor ve onun Çanakkale Savaşı’ndaki günlerini anlatmaya geçiyor.

Daha doğrusu anlatmamaya geçiyor.

Atatürk Çanakkale’ye nasıl gitti? Orada nasıl bir fark yarattı? Bu bilgiler yok. Anlamsız bir laf kalabalığı var.

Özdil Atatürk’ün 1915’te Çanakkale’ye atandığını söylüyor. Aslında oraya gitmek için kendisi başvuruyor; çünkü o Sofya’da rahat rahat zaman geçirmek istemiyor.

Tarihin yazıldığı bir yerde, tarihi yazmak istiyor Atatürk.

Şu anda Türkiye’de, Kemalistlerin çoğu da dahil olmak üzere, insanların önemli bir kısmı işlerinde ya da siyasette elini taşın altına sokmadan yaşayıp gitme peşinde.

Atatürk seyirci değildi, aksiyonerdi.

Savaşa en ön saflarda katılıp hem ordusuna ve ülkesine yarar göstermek hem de bu yolla öne çıkmak istiyordu, tanınmak istiyordu.

Çok şeyler yapmak istiyordu ve bunları yapabilmek için başarıya, zafere gereksinimi vardı.

Atatürk’ün Çanakkale’de ne yaptığı da Özdil’in kitabında belirsiz.

Atatürk ne yaptı da Çanakkale kahramanı oldu?

Atatürk’ün komutanı Liman Von Sanders kendi anılarını yazdığı kitabında Atatürk’ün katkısı için Çanakkale Savaşı’nın dönüm noktası tanımı yapıyor.

O kadar önemli bir hamleydi Atatürk’ün hamlesi.

Atatürk Çanakkale’ye tayin edilmişti ama yalnızca yedek birliklerin başına verilmişti.

Liman Von Sanders de başta Atatürk olmak üzere alttaki komutanlarını dinlemeyip savunmayı kendi tahmini doğrultusunda kurmuştu.

İtilaf devletleri Liman Von Sanders’in tahmini doğrultusunda yarımadanın ucuna büyük bir çıkartma yaptılar.

Ama bir o kadar büyük başka bir çıkartmayı da Atatürk’ün tahmin ettiği yere, Türk birliklerinin arkasına doğru yaptılar.

Atatürk yedek birliklerin başında bir şey yapamamaktan dolayı üzüntü içindeyken bu ikinci çıkartmayı haber alıp üstlerine danışmadan, askerlerini harekete geçirdi ve 4 saat bir yürüyüş sonunda düşmanın önüne dikti.

Düşman karaya çıktığı yerden çok uzaklaşmadan bu hamleyle olduğu yere çakılı kaldı.

Böylece de diğer Türk birliklerini, ana kuvvetleri çembere alınmaktan kurtardı.

Tüm savaşın talihi orada Atatürk’ün üstün öngörüsü ve inisiyatifiyle döndü.

Çanakkale Savaşı ve Atatürk’ün katkısı o kadar önemliydi ki bu bilgi Enver Paşa tarafından bastırılmaya çalışılsa da diğer tüm Türk subayları öğrenip her yerde Atatürk’ü takdir ettiler.

Kazım Karabekir paşa İstanbul yönetimi tarafından görevden alındığı duyurulan Atatürk’e “Emrindeyiz paşam” derken en başta Çanakkale Savaşı dolayısıyla bunu diyordu.

Ama Özdil bu kısımları hiç anlamadığı için kitabında bunları anlatmıyor.

Anlattığı şeyler çoğunlukla bildik şeyler.

Anlatılmayan Atatürk’ü anlamak için okumak gerek. Ama okunması gerekenler arasında Özdil’in bu kitabı yok.

Çanakkale Savaşı’nı anlamak için şu videoyu izleyebilirsiniz:

Şunları okumakta da yarar var:

https://muratyildirimoglu.wordpress.com/2016/01/26/yilmaz-ozdil-dolayisiyla/

https://muratyildirimoglu.wordpress.com/2014/03/20/saskin-yilmaz-ozdil/

Windows’ta Kaç Kullanıcı Yaratabiliriz?

Ekim 11, 2018

Windows’ta kullanıcılar birer nesnedir (object).

Kullanıcıların sayısına ilişkin özel bir kısıtlama yok ama tüm nesnelerin sayısına ilişkin bir kısıtlama var.

Windows’ta hemen her şey bir nesnedir; kullanıcılar, kullanıcı grupları, bilgisayarlar, yapısal birimler, grup ilkeleri vb.

Microsoft bu nesneler için 30 bitlik bir sayaç kullanıyor; bu da, 2 üzeri 30, yaklaşık olarak bir milyar yapıyor.

Normal koşullarda bir milyar nesne yaratabileceğiz.

Üstelik, değişiklik yaparak 30 biti 31 bite çıkartıp yaratılabilecek nesne sayısını 2 milyara yükseltmek de mümkün.

Ama gerçekte bu kadar nesne yaratabilecek miyiz? Yoksa biz bekleyen pratik sınırlar var mı?

Önümüzde bir örnek var: NTFS dosya sistemi.

Microsoft, NTFS formatlı bir disk bölümünün 12 ExaByte’a kadar büyüyebileceğini söylüyor ama örneğin sabit disk bölümleme şekli (MBR ya da GPT) bu sınırı düşürüyor.

Bu nedenle, mümkün olduğunca fazla sayıda kullanıcı yaratıp sınırı görmeye karar verdim.

Yeni bir Windows Server 2016 kurulumu yapıp makineyi etki alanı denetçisi (DC) durumuna yükselttim.

İlk başta yalnızca birkaç kullanıcı vardı.

Sonra da aşağıdaki basit Powershell betiğiyle kullanıcı yaratmaya başladım:

[long]$number=1

while($true){

$name=$number.tostring()

new-aduser -name $name

$number=$number+1

}

Betik sonsuz bir döngüden oluşuyor.

Bu döngüyü istediğiniz zaman kırabilirsiniz. Ben çeşitli denemeler ve bakım işlemleri yapmak için birçok kez döngüyü kırıp sonra yeniden başlattım.

Yeniden başlattığınızda yalnızca ilk satırdaki eşitliği değiştirmeniz ve en son hangi rakamda kaldıysanız onu yazmanız yeterli.

En son nerede kaldığınızı öğrenmek için Güvenlik Günlüğü’nü kullanabilirsiniz. 4720 nolu olaylar yeni kullanıcı yaratımına ilişkindir. En üstteki 4720 olayı son yaratılan kullanıcıyı gösterir.

Bu arada, Sistem Günlüğü’nde de çok sayıda 16647 ve 16648 nolu olaylar yer alacaktır. Bu olaylar DC’nin yeni bir RID havuzu isteyip aldığını gösterir.

Yaratılan her nesneye bir güvenlik kimliği (Security ID-SID) atamak gerekir. SID’ler de sabit bir etki alanı kimliği ve Göreli Kimlik (RID) kısımlarından oluşur.

RID’ler RID rolündeki DC tarafından beş yüzer beş yüzer üretilip DC’lere gönderilir.

İlk başta i5 işlemcili ve SATA sabit diskli bir laptop makine kullandım. Kullanıcı yaratma betiği saatte 50 bin kullanıcı yarattı.

Yaratım işlemini hızlandırmak için Denetim Masası’ndaki güç yönetiminde, güç ayarını “Balanced”dan “High Performance”a getirdim.

Yalnızca bu değişiklik bile performansı iki kat arttırdı ve yaratılan kullanıcı sayısı saatte 100 bin civarına çıktı.

Powershell’in sağladığı paralel çalışmanın performansı daha fazla arttırıp arttırmayacağını görmek istedim ve aşağıdaki iş akışı kodunu yazdım:

workflow Create

{

$numbers = 4997970..5200000

foreach -parallel ($number in $numbers)

{

$name=$number.tostring()

new-aduser -name $name

}

}

Create

Sonuç büyük bir düş kırıklığı oldu. Yukarıdaki kod saatte yalnızca 8 bin civarında kullanıcı yaratabildi.

Kullanıcı yaratma işlemi paralel hale getirilemeyecek bir işlem olabilir.

Daha sonra, i7 işlemcili ve SSD diskli bir başka laptop makineye geçtim.

Bu değişiklik performansı yüzde elli arttırdı ve yaratılan kullanıcı sayısını 150 bin civarına çıkarttı.

Yaratılan her kullanıcının Active Directory (AD) veritabanına 2,2 KB’lık veri eklediğini fark ettim.

Bu rakam bana yüksek göründü. Çünkü kullanıcı yaratırken bir tek adını veriyorum ve AD veritabanının da nesneleri öznitelik (attribute) temelli sakladığını biliyoruz.

Yani, bir değere sahip olmayan özniteliğe ilişkin bilgi veritabanında tutulmuyor. Öyleyse veritabanı neden bu kadar büyüyor?

Veritabanı fragment olmuş olabilir diyerek AD veritabanını defrag etmeye karar verdim.

Windows 2008’den bu yana AD işlevi bir hizmet olarak çalışıyor (Active Directory Domain Service).

Bu hizmeti durdurup AD veritabanı üzerinde çeşitli bakım-onarım işlemleri gerçekleştirebiliyoruz.

Hizmeti durdurup komut satırına indim, AD veritabanı olan ntds.dit dosyasının bulunduğu klasöre geçtim (varsayılan olarak \Windows\NTDS klasörü).

Orada şu komutu verdim:

esentutl /d ntds.dit

Bu işlemden önce veritabanı 45.1 GB idi, işlem sonrası yalnızca 43.8 GB’a indi. Pek parlak bir sonuç değil!

Demek ki veritabanının büyümesi fragmente olmasından kaynaklanmıyor.

Microsoft’un bunun üzerine düşünmesinde yarar var.

Veritabanının büyümesi birçok şeyi sınırlıyor.

Örneğin, AD kullanıcılarının sayısını şu komutla öğrenemiyoruz:

(get-aduser –filter *).count

Bu komutu verdiğimizde yaklaşık yarım saat sonra bir hata mesajı alıyoruz: The server has returned the following error: invalid enumeration context.

Get-aduser komutu yeni bir hizmet olan “Active Directory Web Services” ile ilişkiye geçiyor. Bu hizmetin de “MaxEnumContextExpiration” şeklinde bir parametresi var, varsayılan değeri de 30 dakika..

Eğer sorgunuz 30 dakikadan daha fazla zaman alıyorsa bu nedenle hata alıyorsunuz.

Önerilen şey bu değeri yükseltmek.

Bu değer \Windows\ADWS klasörü altındaki “Microsoft.ActiveDirectory.WebServices.exe.config” dosyasında bulunuyor.

Ama bu değişikliği yaptıktan sonra da hata almaya devam ettim.

Komutun çıktısını bir değişkenden saklayıp o değişkeni incelemeye karar verdim ve aşağıdaki komutu verdim:

$users=get-aduser –filter *

Ne yazık ki bu komut da hatayla sonuçlandı.

Burada ilginç olan, aşağıdaki gibi bir komutla kullanıcı listesini alabilmemiz:

$count=invoke-command {net user }

Kullanıcı sayısı yaklaşık 11 milyon iken bu komut verdim ve komut elli dakika içinde tamamlandı.

$count.length komutuyla satır sayısını alabildim: 3860947.

“Net user” komutunun her satırda üç kullanıcıyı gösterdiğini bildiğimiz için satır sayısını üçle çarparak kullanıcı sayısını bulabiliyoruz.

Üstelik, aşağıdaki komutla kullanıcı listesini bir metin dosyasına da verebiliyoruz:

$count | out-file listusers.txt

Yukarıdaki komut 567 MB’lık bir dosya yarattı. İçinde 11 milyon kullanıcının adı vardı.

30 yıllık net user komutu işe yararken Powershell komutlarının hata vermesi utanç verici.

Bundan sonraki zamanda, betik yaklaşık 14 gün boyunca aralıksız ve sorunsuz çalıştı.

Sonra da, kullanıcı sayısı 67 milyona ulaştığında Windows’um çöktü.

Kritik bir işlemin sonlandığını (A critical process died) söyleyen mavi ekran (BSOD) almaya başladım.

Güvenli Kip seçeneklerini özellikle de AD hizmetlerinin çalışmadığı “Directory Services Repair Mode”u kullanarak bilgisayarı başlatmak istedim ama seçeneklerin hiçbiri işe yaramadı.

Demek ki sorun AD hizmetleri ya da veritabanı değildi.

Hataya bir disk hatasının neden olabileceğini düşünerek “chkdsk /f” komutuyla diski denetledim. Diskte hiç hata çıkmadı.

“sfc /scannow” komutu “Windows Resource Protection could not perform the requested operation” mesajı vererek başarısız oldu.

Aynı şekilde “DISM /image:C:\ /cleanup-image /revertpendingactions” komutu da “error 3” mesajıyla başarısız oldu.

Ben de Server 2016’yı daha fazla onarmaya çalışmaktan vazgeçtim.

Benim için kullanıcı sayısı sınırı 67 milyon oldu:)

Şu yazıları da okuyabilirsiniz:

https://muratyildirimoglu.wordpress.com/2018/02/07/spacex-firmasinin-roketlerini-powershell-ile-izlemek/

https://muratyildirimoglu.wordpress.com/2017/12/12/yerel-administrator-parolalarini-degistirme/

https://muratyildirimoglu.wordpress.com/2016/11/14/dosyalari-sifreleyen-fidye-yazilimlarina-karsi-volume-shadow-copy-ozelligini-kullanma/

https://muratyildirimoglu.wordpress.com/2011/11/16/mac-adresine-dayanan-guvenlik-onlemleri/

https://muratyildirimoglu.wordpress.com/2009/03/05/certificate-services-yuklu-makinenin-adini-degistirmek/

https://muratyildirimoglu.wordpress.com/2014/10/28/windows-server-2012-r2de-oturum-acma-betigi-garipligi/

https://muratyildirimoglu.wordpress.com/2014/06/30/windowsta-yapisal-birimlerin-ve-grup-ilkelerinin-verimsiz-kullanimi/

https://muratyildirimoglu.wordpress.com/2012/11/15/windows-8-uzerine-birkac-not/

https://muratyildirimoglu.wordpress.com/2010/03/29/power-users-grubu/

https://muratyildirimoglu.wordpress.com/2010/02/09/windows-7-kullanicilari-icin-guvenlik-onerisi/

https://muratyildirimoglu.wordpress.com/2013/08/27/uacnin-gucu/

https://muratyildirimoglu.wordpress.com/2009/05/07/vista-ve-windows-2008de-ntfs-izinlerinin-devraliminda-degisiklik/

How many users can be created in Windows?

Ekim 11, 2018

Users are objects in Windows.

There is no limit specific to number of users but there is a limit for the total number of objects.

And objects are almost everything in Windows; users, user groups, computers, printers, domains, organizational units, group policies, etc.

Microsoft assigns 30 bit for the number of objects. It means 2 to the power 30 objects, approximately 1 billion objects can be created.

And if this number is not enough, you can add an additional bit to raise the number to 2 billion. It is more than enough.

But, can we actually create this many objects?

Or, do we have some practical limitations restricting the number to a much less quantity?

We have an example: NTFS file system.

Microsoft says that an NTFS volume may be up to 12 ExaBytes but in reality you bump into many limits like partitioning of the hard disk; MBR vs GPT.

To see the limits, I decided to create as many users as possible.

I installed a fresh new Windows 2016 and promoted it to a DC.

A fresh DC has only a few users.

Then I started creating users using the simple PowerShell script:

[long]$number=1

while($true){

$name=$number.tostring()

new-aduser -name $name

$number=$number+1

}

As you can see, it is and endless loop.

I interrupted it many times for doing some trials and maintenance.

If you happen to try this script, you can also break it when you want.

To start again, just change the first assignment statement, and start from where you left.

To see where you left, you can use Security log. Event ID 4720 shows the creation of the new users and top 4720 event will display the last user created by the script.

By the way, System log displays many 16647 and 16648 events that show new account-identifier pool requests and pool assignments.

When you create a new user, Windows must create an SID (Security ID).

Security ID consists of a constant domain ID part and RID (Relative ID).

Relative IDs are created by the RID Operations Master and assigned to DCs in groups of 500 RIDs.

At first, I used a laptop computer with i5 cpu and SATA hard disk. Script created close to 50 thousand users an hour.

To speed it up, I changed the Power configuration in Control Panel, from Balanced to High Performance.

This change resulted in an approximately 100% performance increase and number increased to 100 thousand an hour.

Then I decided to use paralellel execution in workflows to see if it will affect the procedure.

I wrote the following script:

workflow Create

{

$numbers = 4997970..5200000

foreach -parallel ($number in $numbers)

{

$name=$number.tostring()

new-aduser -name $name

}

}

Create

The result is nothing but disappointing: The parallel script created 8 thousand users an hour!

The creation of users may be something that cannot be parallelized.

After that, I switched to a laptop with i7 processor and SSD disk and continued to the original script.

Switching to new computer raised the number to 150 thousand users an hour.

One thing I noticed that creation process adds 2.2 KB of info into Active Directory (AD) database.

It is strange because I create an object with only a name, nothing else and we know that AD keeps info about objects as attribute based.

So, the AD database shouldn’t be so big but it does not listen to me and it gets bigger and bigger.

I decided to defrag AD database to see if it is a result of defragmentation of the database.

After Windows Server 2008, domain service (Active Directory Domain Service) can be stopped and you can do some maintenance tasks on the AD database.

After stopping the service, I switched to the classical command prompt and changed to \Windows\NTDS folder, where, by default, the AD database, ntds.dit resides.

I issued the following command:

esentutl /d ntds.dit

The database was 45.1 GB before the defrag procedure.

Defrag procedure decreased it to mere 43.8 GB. Not a brilliant result!

It means that AD database has not been fragmented at all.

Microsoft’d better consider this point.

The gigantic database restricts many things. For example, you cannot get the number of the AD users using the following command:

(get-aduser –filter *).count

After half an hour, the above command fires an error message: The server has returned the following error: invalid enumeration context.

Get-aduser command talks to “Active Directory Web Services”, and this service has a timeout value, “MaxEnumContextExpiration” and it is 30 minutes by default.

If your query takes more than 30 minutes, command returns the error.

Solution is said to be increasing this timeout value in this service’s configuration file, “Microsoft.ActiveDirectory.WebServices.exe.config”, under \Windows\ADWS folder.

But, after increaing this value to 300 minutes, I still got the same errors.

I tried to save the result of the command to a variable with this command:

$users=get-aduser –filter *

And it also failed.

The strange thing is that you can get the list and number of the users using classical command “net user” as in the following:

$count=invoke-command {net user }

I issued this command when the number of the users is approximately 11 million and the command completed in 50 minutes.

$count.length command displayed the number of the lines: 3860947.

We know that “net user” command displays three user names in a line so if you multiply 3860947 by 3, you get the number of the users.

After that, I issued the following command to export the users to a text file:

$count | out-file listusers.txt

A 567 MB file is created, containing the names of all users; 11 million users.

It’s a shame that 30 year-old command was executed successfully whereas the Powershell commands failed.

After running smoothly for 14 days, and creating 67 million users, my Windows crashed.

I got a BSOD stating that a critical process died.

I tried restarting the computer to Safe Mode options, especially Directory Services Restore Mode option so I can see if the Active Directory database caused this error but all options failed.

To see if a hard disk error caused the crash I used chkdsk command, “chkdsk /f”. Command completed without displaying any disk error.

sfc /scannow command failed and displayed “Windows Resource Protection could not perform the requested operation” message.

Also, “DISM /image:C:\ /cleanup-image /revertpendingactions” command failed with error 3.

So, I gave up fixing the Server 2016.

For the time being, the limit is 67 million users for me:)

Update (12/11/2018): At the beginning of October, I installed Windows Server 2012 R2 and tried the same thing on the i7-SSD laptop. This time I received no error and after 40 days, was able to create more than 100 million users after that I stopped the experiment because so little space left on my 256 GB SSD. I think the problem in the first experiment is not related to the OS (2016 server). Testing again on 2016 server would take another month so, it is left to the reader:)
By the way, you can buy this 256 GB SSD disk with 100 million users on it to do your tests. Its price is $500. Drop a mail to murat@muratyildirimoglu.com.

You can also read the following articles:

https://muratyildirimoglu.wordpress.com/2017/12/12/resetting-local-administrator-passwords/

https://muratyildirimoglu.wordpress.com/2014/03/05/how-to-determine-which-user-added-a-computer-to-the-domain/

https://muratyildirimoglu.wordpress.com/2013/03/15/my-experience-with-exchange-server-after-domain-rename/

https://muratyildirimoglu.wordpress.com/2017/12/22/a-new-powershell-command-structure-is-necessary/

https://muratyildirimoglu.wordpress.com/2013/03/15/excel-heals-defects-of-powershell/

Turkcell’in BİP’i

Ekim 4, 2018

Bir şirket için en kötü işlerden birisi, ana amacını, ne yaptığını unutup başka işlere girişmektir.

Bunu dışarıda Intel yapıyor. Bildim bileli Intel ana konusu olan yarıiletkenler, işlemciler yerine başka işlere girişir.

Intel’in fax kartı ürettiğini, yedekleme cihazları ürettiğini, çeşitli yazılımlar ürettiğini, bilgisayara takılan mikroskop ürettiğini çok az kişi anımsar.

Intel tüm bu işlerini yüzüne gözüne bulaştırıp bu ürünleri terk etmiştir.

Turkcell de 15-20 yıldır kendini bir teknoloji firması olarak tanımlıyor. Halbuki Turkcell bir operatör firması.

Ama operatör firma olarak anılmak Turkcell’i rahatsız ediyor; o daha yüksek bir şeyler olmalı.

Bu durum gülünç olduğu gibi asıl işini de aksatmasına neden oluyor.

Bakalım Turkcell ne olduğunu ne zaman kabullenip vazgeçecek dünyaya teknoloji ihraç etme çabalarından.