Thursday, November 29, 2007

Use "kernel_thread()" in an interrupt handler

May "kernel_thread()" be used in an interrupt handler routine ?
No, "Kernel panic - not syncing: Aiee, killing interrupt handler!" would occur when you use it.

Here are some discussions about that.
关于中断例程中的子进程睡眠问题
酷!學園 首頁 -> 程式討論版 -> 修改IP 問題

TODO:
Is "packet_type->func" an interrupt handler?
Even you meet kernel panic, it doesn't mean that you should be panic too, but there is a way of tracing the kernel to go. Then you may find more familiar with kernel.

Wednesday, November 21, 2007

使用 ramdisk

使用時機:
當有餘裕的 ram 可以使用,又使用了對 disk io有較高需求的applications
使用ramdisk可以把一段 ram 借來當作 disk 使用,來考慮把 application 的 disk io 放到這裡,減少等待對慢速 disk 存取的機會來增加效能。也得考慮把需要的資料寫回 disk

使用方式:
1. mknod -m 660 /dev/ram b 1 1
開啟一個 block device node, /dev/ram
b 後面的兩個1分別代表這個 device node 的 major number 和 minor number.
Major 的 1 是指 ram disk, 若是2 指的是 floppy disk (可以參考 kernel document, "Documentation/devices.txt")

2. mkfs -t ext2 -m 0 /dev/ram 4096
mkfs 可以設定 ramdisk 的大小, 4096 表示 block 的數目,每個 block 的大小在 make kernel 時可以指定並依此在這個 block device 鋪上特定的 file system

3. mount -t ext2 /dev/ram /mnt/disk
把剛剛做好的 ramdisk 掛入系統 (可用 df 來觀看系統目前所有掛起的 block devices),接著便可以無差別的使用它了

--

TODO
1. Device nodes 可以使用重複的 major, minor, 或許說每個特定的 device 由一組 major, minor 來辨別,且可以任意使用 mknod 來將他們對映到某項 device node. 如果 cat /proc/diskstats, /proc/devices 可以看到一些相關的系統設定,但不知道是何時,如何建立起這些的? (可能是kernel 在load driver 建立的)

Reference:
How to make a ram disk

Sunday, November 18, 2007

Performance Tuning for iSCSI

According these papers, A scalable and high performance software iSCSI implementation, and Performance characterization of iSCSI processing in a server platform, CRC computation do affect the iSCSI performace. And in my prime test with oprofile, after the CRC computation is disabled in RX, the performance gets a roughly 20% enhancement. Even thought my test may be not accurate, I get more confidence to stride down this way.

Reference:
1. Design and Implementation of the iSCSI Storage Protocol on HBA Initiator (iSCSI HBA Initiator 端儲存協定處理架構之設計與實作)

Thursday, November 08, 2007

NAS and SAN

除了把磁碟機裝在自己的機器上,你也可以選擇使用網路磁碟。網路磁碟的概念大致上就是透過網路來存取不是裝在自己機器上的磁碟,但使用上卻像是本機上的磁碟機一樣方便。雖然同是網路磁碟,但是可以使用許多不同的方法來實現它。
這邊我想介紹的是NAS(Network Attached Storage)和SAN(Storage Area Network), NAS大多使用NFS和SMB(samba)來提供網路硬碟的功能,你可以在Windows上面使用"連線網路磁碟機"來進行設定。iSCSI是SAN的一個派別,使用ethernet網路,另外一個派別使用了光纖來提供網路連線。在Windows上使用iSCSI, 你可以先裝上Windows iSCSI Initiator, 再利用它來和網路磁碟(iSCSI target)建立連線,完成後便可以在"控制台->系統管理工具->電腦管理"內的磁碟管理發現多出來的網路磁碟。
使用iSCSI, 你會發現多了一個選項,你可以對網路磁碟機進行格式化,看起來似乎更接近了裝在本機上的磁碟機。若是有興趣,你可以看到iSCSI便是Internet SCSI, 也就是你的作業系統會把iSCSI磁碟當作SCSI磁碟使用(作業系統存取磁碟的指令是SCSI的形式), 但作業系統和磁碟實際的溝通(transport layer)卻是改換成使用Internet
這是由於iSCSI(SAN)並不提供檔案系統(File System), 而NAS提供。所以在使用iSCSI時,存取檔案需要的檔案系統需要另外設定(裡如在Windows上,你可以指定檔案系統為NTFS或是FAT32來進行格式化)。所以我們也說iSCSI(SAN)提供的是block-level的服務,而NAS提供的是file-level的服務。

根據一些測試結果顯示(Performance Comparison of iSCSI and NFS IP Storage protocols),相同的環境下使用iSCSI與使用NFS比較,iSCSI有一些效能上的優勢。 在分析(Differences Between NFS and iSCSI)裡面說明了,這是因為NFS的設計是讓多人能夠同時透過網路使用,為了這個目的NFS多做了一些工作,來確保檔案間的同步更新,避免可能的錯誤。
也由於設計上思維的不同,NAS和SAN也各有比較恰當的使用時機。(或是說它們本來就是設計來使用在不同的需求上。) 透過下面兩張圖,可以了解的是一般使用者(clients)需要透過一層servers來存取iSCSI的磁碟,但卻可以直接使用NFS的服務。使用它們的選擇可能要取決於用戶/公司的網路佈置,與現有網路服務的搭配。另外也取決於使用的目的。例如要做例行性的資料備份,SAN可能就會是較佳的選擇。

























(From : 透過網路降生 彈性儲存系統iSCSI實測)





















(From : wiki - Network-attached storage)

Wednesday, November 07, 2007

Kernels Used in Fedora Core

FC1: 2.4.19
FC2: 2.6
FC3: 2.6
FC4: 2.6.11
FC5: 2.6.16
FC6: 2.6.18
FC7: 2.6.21
FC8: Coming (8. November 2007)

Reference:
Fedora (Linux distribution) - Wikipedia

我試著不說 me too

有時候我會害怕回答"跟他一樣","me too"的答案。但是有些時候我回答"我也是"卻是毫不猶豫。特別是當感覺到似乎有種期待不一樣答案的氣氛,但我還沒準備好,而我又不想拿不成熟的想法來回應那難得的期待。
有時候會積極想改變自己微弱的存在感,那似乎很常是不太緊張的景況。"me too"以外的回答好像沒完,天馬行空,胡說八道也不覺得難為情。

最近時常感覺到身上有某部分是關閉著。每天像是以一個70%正常人的姿態生活。比較感到糟的是,可能會造成有與100%正常人來往的習慣的朋友或同事有些怪怪的感受。