Archive for the 'Network' Category

screenrc 指定視窗 encoding

23:58 <@sunpoet> wens 是新的不能亂洗澡站長。 :P
23:58 <@sunpoet> 原來之前改錯地方,現在 screenrc 裡面可以用 -b/-g 指定該視窗要哪個 encoding 啦。
00:06 < NotExist> sunpoet: 你用哪版@@ 我man沒看到 囧rz
00:06  * NotExist 想那功能也很久….
00:10 <@sunpoet> NotExist: 自己 patch …
00:15 <@sunpoet> NotExist: http://sunpoet.net/mira/screen-big5-gbk
00:16 <@sunpoet> 像這樣連大神的站 screen -b -t abpe 2 env LANG=C LC_ALL=en_US.ISO8859-1 telnet abpe.org
00:20 < NotExist> sunpoet: XD 感謝
00:20 <@sunpoet> NotExist: 因為我懶惰 :p
00:21 < NotExist> sunpoet: 科技始終來自於惰性 :p

感謝 sunpoet,作個備忘。

MySQL 在 Mtron SSD 上的測試

這次PIXNET進了2顆 32G Mtron MSP-SATA70(Spec 上寫的寫入速度為 90MB/s,讀取速度為 120MB/s),裝在 8-way、12G RAM 的 Debian Linux 上,跑 MySQL 5.1 Slave,用 MyISAM 當 backend。最大的 MyISAM Table 大概有 3GB。

這次一開始就採用 RAID 0, 4KB stripe size + XFS (4 KB Data Size) + noop disk scheduler。測試開始時,從DB Master複製資料所需的時間,大概是兩顆 SCSI 10k RPM + XFS 的 1/3,約 70MB/s。接著 replication qps 大概在 3000-4000 左右徘徊,最高大約是 15000 qps。

實際使用上(同時有 SELECT 與 UPDATE),大概 8000 qps 是極限,接著就會遇到 CPU Bound,對於較複雜的 SQL Query (SELECT … IF EXISTS)會開始卡。如果只計算單純的 SELECT QUERY,則可以到約 15000 qps。

Mtron SSD 在 MySQL (MyISAM) 上跑了兩個小時

果然是一分錢一分貨,拷貝資料庫花的時間比起 SCSI 10k RPM RAID0 少了 2/3。採用與MySQL 在創見 SSD 上的測試同樣的設定,並真正上線灌真實流量進去後,觀察到 CPU Bound 了。

FreeBSD: vfs.read_max for RAID

Tested with: bonnie -s 2048, FreeBSD 7.0 UFS2 , Hardware RAID 5 (6 PATA 7200rpm 250G disks)
vfs.read_max=8 (default)

             -------Sequential Output--------  
             -Per Char- –Block— -Rewrite– 
Machine   MB K/sec %CPU K/sec %CPU K/sec %CPU   
        2048 25812 24.8 26483  6.6 13886  4.4   
             —Sequential Input– –Random–
             -Per Char- –Block— –Seeks— 
             K/sec %CPU K/sec %CPU  /sec %CPU 
             32162 32.5 33386  5.1 232.3  1.5

vfs.read_mas=128

             -------Sequential Output--------
             -Per Char- –Block— -Rewrite–
Machine MB   K/sec %CPU K/sec %CPU K/sec %CPU 
        2048 25380 24.3 25949  6.5 13956  4.3  
             —Sequential Input– –Random–
             -Per Char- –Block— –Seeks—
             K/sec %CPU K/sec %CPU  /sec %CPU
             41060 43.4 42839  8.3 224.9  1.4

            

vfs.read_max=256

             -------Sequential Output--------
             -Per Char- –Block— -Rewrite– 
Machine   MB K/sec %CPU K/sec %CPU K/sec %CPU 
        2048 25714 24.3 25939  6.5 13966  4.3  
             —Sequential Input– –Random– 
             -Per Char- –Block— –Seeks—
             K/sec %CPU K/sec %CPU  /sec %CPU
             41442 43.8 43737 8.6  225.2  1.5 
       

結論:調整 vfs.read_max 對 random 存取的效能沒有太大幫助,而對 sequential read access 則有 25% 的效能增進。

MySQL 在創見 SSD 上的測試

看了 Kevin Burton 的文章 , PIXNET 決定找目前市場上買的到的 SSD 來測試跑 MySQL,後來是進了4顆 創見32GB MLC SSD,裝在 8-way、12G RAM 的 Debian Linux 上,跑 MySQL 5.1 Slave,用 MyISAM 當 backend。最大的 MyISAM Table 大概有 3GB。

一開始我們用 64KB stripe size 跑 RAID0,但是就如 DK 說的慘不忍睹,用 XFS 每秒的 replication qps 大概在 5~20 上下徘徊,改用 EXT3 也沒有長進,關掉 disk scheduler 也沒用,於是我們試著改 stripe size 到 4KB,不過也沒有顯著增加,對單一大 Table 的 qps 還是只有 5~20,不過若是對小一點的 Table 倒是可以到 300 左右。後來我們想繼續降低 stripe size,但發現不管是 LVM 還是 md(4) 都只支援最低 4KB。

最後發現,這顆創見 SSD 只支援到 UDMA Mode 4,而且規格裡面寫 random write 只有大概 1.6MB/s,但是平常我們的 replication write 就大概要 3MB/s,peak 到 11MB/s(XFS),而創見 SLC 的 SSD 大概也只支援到 4MB/s,還是太慢。

結論:台灣市場上目前的 SSD 效能還不夠好,而國外的 Mtron 還太貴,C/P值不夠好,兩顆 32G 就可以多加一台機器了。

gjournal 與 UFS snapshot

在 FreeBSD 7.0 提供了一個新功能: gjournal。但在上面跑 UFS snapshot 會 kernel panic。(這個 RAID 有 5T)

panic

而且發現在打 snapshot 的途中不能寫(這也就算了),還不能讀 Orz
所以 ufs snapshot 沒有用,要 snapshot 還是乖乖用 zfs 或是 NetApp 好了…

FreeBSD 固定開機抓 SCSI Device 的順序

在 /boot/device.hints 設定 hint.scbus.0.at=”ahd0″ 即可。

iSCSI @freebsd

Hint:
1. 預設的 Initiator NodeName 是 iqn.2005-01.il.ac.huji.cs:<hostname>
2. 依照 man 5 iscsi.conf 設定 /etc/iscsi.conf
3. util 是 iscontrol, kernel module 是 iscsi_initiator

iSCSI @debian

1. Compile from source will be easier than installing with apt-get.
2. Kernel source needed. crc32c kernel module needed.
3. modprobe iscsi_tcp crc32c.
4. /etc/init.d/open-iscsi start
5. /sbin/iscsiadm -m discovery -t st -p <ip>
6. /sbin/iscsiadm -m node –targetname <target name> –portal <ip> –login
Then, sd* will appear.

compile tomato firmware @debian

Packages needed: build-essential bison flex zlib1g-dev
Read the README file in the tomato package then run make.
If make complains that it cannot found cross compiler, try

env PATH=$PATH make