2017年11月12日 星期日

解決 Windows Modules Installer Worker 占用 CPU 的問題

在確定所有 Windows Update 都已安裝後,如果還有問題,也許可以試試關閉「最佳化磁碟機」:

2016年4月18日 星期一

Intel SSD 535 (240G) 寫入放大 10倍 變成 1.5倍 的方法

如果 0.5秒就去讀取一下 SSD, 就能避免大量 Total NAND Writes(F9)
後面是驗證程式,自行編成exe之後,放到系統啟動時自動執行。
此程式僅會增加 SSD 1KB/sec 的讀取,對系統影響非常小。
希望 Intel 能提供韌體徹底解決。

  1. 先解決 wfpdiag.etl 頻繁寫入的問題: netsh wfp set options netevents = off
  2. 如果可以, 把 swap file 移到傳統 HDD
  3. 其他SSD優化設定...自行 google...
  4. 底下是驗證結果:
  5. SMART: Total NAND Writes(F9), Total LBAs Read(F2), Written(F1)
  6. 2016/4/13-16:00     749G(F9)           83.75G(F2)   76.09G(F1)
  7. 2016/4/18-20:47     781G              141.84G       96.59G
  8. 5天增加               32G               58.09G       20.5G
  9. 這5天的寫入放大僅1.5, 執行此程式之前竟然會接近10 ?!
2016/08/04 已將底下程式 source & exe 放到 github:
https://github.com/fonwin/issd-rx
最近觀察寫入放大約2倍左右

#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) {
   int sleepms = 500;
   if(argc > 1)
      sleepms = atoi(argv[1]);
   printf("SSD read interval: %d ms\n", sleepms);

   DWORD DesiredAccess = GENERIC_READ|GENERIC_WRITE;
   DWORD ShareMode = FILE_SHARE_READ;
   DWORD CreationDistribution = OPEN_ALWAYS;
   DWORD FlagsAndAttributes = FILE_ATTRIBUTE_NORMAL | FILE_FLAG_NO_BUFFERING;
   HANDLE FD_ = CreateFileA("./dummy", DesiredAccess, ShareMode, NULL, CreationDistribution, FlagsAndAttributes, 0);

   DWORD rsz = 0, wsz = 0;
   char  buf[1024] = { 0 };
   if(::GetFileSize(FD_, NULL) < sizeof(buf))
      WriteFile(FD_, buf, sizeof(buf), &wsz, 0);
   __int64 tms = 0;
   __int64 totalrx = 0;
   for(;;) {
      SetFilePointer(FD_, 0, 0, FILE_BEGIN);
      ReadFile(FD_, buf, 512, &rsz, 0);
      if(rsz == 0)
         printf("[fd=%p, r=%d,w=%d]", FD_, rsz, wsz);
      totalrx += rsz;
      SleepEx(sleepms, TRUE);
      if((tms += sleepms) % (1000*10) == 0) {
         __int64 secs = tms / 1000;
         printf("\r[Spent time: %lld:%02d:%02d][Read %lld bytes]"
                , secs/60/60, (int)(secs/60)%60, (int)(secs%60)
                , totalrx);
      }
   }
   CloseHandle(FD_);
   return 0;
}

2015年8月6日 星期四

物種起源 -- 進化論

我不是生物學家,但是心裡一直對「達爾文物種起源進化論」有很多疑問,覺得不吐不快。我對達爾文學說的所有理解,都只是從國中課本、科學雜誌而來,所以如果我的理解與達爾文有出入,就怪我書讀得太少吧。

據我的理解,達爾文物種起源論的中心思想是:異變然後天擇。我對「如果有異變」然後「由上天選擇是否留下活口」,這樣的想法是很贊同的。那我的疑問到底是啥呢? 我最大的疑問是在「如果有異變」這個理論的起點上。

「如果有異變」這個假設到底有什麼問題呢? 達爾文的理論是從「異變之後」開始發想的,先不說必須要「剛好有多少個體同時」發生異變,才能將異變傳給子代。我更在意的是「為何會」有異變的問題。這點當然也有很多學者專家提出,比如:基因隨機突變、剛好被宇宙射線打到、環境壓力... (恕我書讀得真的不多,有哪些人? 在哪本書、哪篇論文提出? 我實在舉不出例子),當剛好足夠多的異變同時發生,接下來就是達爾文的事了。

為何會在「同時」有足夠多的異變發生呢? 我們先從細菌的抗藥性來想 (我只是個普通上班族,沒有實驗室可以觀察,沒有人贊助研究,所以只能用想的啊!),這算是大量個體在「同一種環境壓力」下,「剛好同時」發生足夠多的異變,然後就經由天擇留下了沒死的、有抗藥性的細菌。這不是很符合達爾文的理論嗎? 是啊,一點都沒錯! 我的疑問是:「為何會」剛好同時發生足夠多的異變呢? 當然現在也有許多什麼「分子生物學」之類的學說,但都一直沒能解開我心中「為何會」的疑惑? 接下來是我的一些想法。

我認為,每個物種的所有個體,都有一個「共用」的神秘溝通管道 (哈! 我是個電腦程式設計師,也許我的想法與職業有關吧)。也許宇宙形成之初 (也許更早、也許更晚),就存在著這樣的通道,這種通道的力量凝聚了物質、形成了生命 (用說的還真容易)。一旦生命死亡,物質就留在物質空間,生命訊息就會被通道回收 (即使還活著,生命與通道的聯繫是一直存在的),經由生命體反饋的訊息,當累積到一定程度後,通道會知道要延續生命必須有的改變,於是異變就會開始發生了。

這就是「為何會」以及「剛好同時」發生足夠多異變的關鍵原因!

關於這個神秘的「生命訊息通道」(暫且這樣命名),還有很多怪想法,等累積到不吐不快時再說吧,現在要回去寫通道程式了!