<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Jui-Nan Lin's Blog</title>
	<atom:link href="http://jnlin.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://jnlin.org</link>
	<description>Eric's point of view and mumuring...</description>
	<pubDate>Tue, 13 May 2008 16:16:59 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>FreeBSD: 用 ZFS 的 volume 當作 iSCSI Target</title>
		<link>http://jnlin.org/2008/05/14/291/</link>
		<comments>http://jnlin.org/2008/05/14/291/#comments</comments>
		<pubDate>Tue, 13 May 2008 16:16:59 +0000</pubDate>
		<dc:creator>jnlin</dc:creator>
		
		<category><![CDATA[FreeBSD]]></category>

		<category><![CDATA[Network]]></category>

		<guid isPermaLink="false">http://jnlin.org/2008/05/14/291/</guid>
		<description><![CDATA[簡單的說，可以把 iscsi-target 的 extent 設成 ZFS 的 volume 就可以了&#8230;不過我不知道如果 extent 的大小設超過 iscsi-target 會發生什麼事。
# zfs create -V 10g tank/iscsi# cd /usr/ports/net/iscsi-target/ ; make install clean# cat &#62; /usr/local/etc/iscsi/targetsextent0&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; /dev/zvol/tank/iscsi&#160;&#160;&#160;&#160; 0&#160;&#160;&#160;&#160;&#160;&#160; 10GBtarget0&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; rw&#160;&#160;&#160;&#160;&#160; extent0&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 10.0.0.0/24^D# /usr/local/etc/rc.d/iscsi_target forcestart

這樣就可以用別的 iSCSI initiator 來連接 iSCSI Target 了。
]]></description>
			<content:encoded><![CDATA[<p>簡單的說，可以把 iscsi-target 的 extent 設成 ZFS 的 volume 就可以了&#8230;<br />不過我不知道如果 extent 的大小設超過 iscsi-target 會發生什麼事。</p>
<blockquote><p># zfs create -V 10g tank/iscsi<br /># cd /usr/ports/net/iscsi-target/ ; make install clean<br /># cat &gt; /usr/local/etc/iscsi/targets<br />extent0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /dev/zvol/tank/iscsi&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10GB<br />target0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rw&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; extent0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.0.0.0/24<br />^D<br /># /usr/local/etc/rc.d/iscsi_target forcestart</p>
</blockquote>
<p>這樣就可以用別的 iSCSI initiator 來連接 iSCSI Target 了。</p>
]]></content:encoded>
			<wfw:commentRss>http://jnlin.org/2008/05/14/291/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MySQL on Mtron SSD 之二</title>
		<link>http://jnlin.org/2008/05/07/290/</link>
		<comments>http://jnlin.org/2008/05/07/290/#comments</comments>
		<pubDate>Wed, 07 May 2008 13:05:04 +0000</pubDate>
		<dc:creator>jnlin</dc:creator>
		
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://jnlin.org/2008/05/07/290/</guid>
		<description><![CDATA[我們把 E5410 換成 E5450 再做了一次測試，發現這次還是卡在 CPU Bound，但是比起 E5410 來說有效能上的改進（同樣是實際上線，E5410 的 qps 極限是 8000，平均是 4000 左右；E5450 極限也是 8000，但是平均可以到 5000）。接著我們調整了 thread_concurrency 與 thread_cache_size 之後，平均 qps 可以到 6000。
另外，這次發現大概有 40% 的 CPU Time 被 system 吃掉了。有沒有對 Linux 比較熟的長輩可以教一下怎麼看這些 CPU 是被用到哪裡去了？
]]></description>
			<content:encoded><![CDATA[<p>我們把 E5410 換成 E5450 再做了一次測試，發現這次還是卡在 CPU Bound，但是比起 E5410 來說有效能上的改進（同樣是實際上線，E5410 的 qps 極限是 8000，平均是 4000 左右；E5450 極限也是 8000，但是平均可以到 5000）。接著我們調整了 thread_concurrency 與 thread_cache_size 之後，平均 qps 可以到 6000。</p>
<p>另外，這次發現大概有 40% 的 CPU Time 被 system 吃掉了。有沒有對 Linux 比較熟的長輩可以教一下怎麼看這些 CPU 是被用到哪裡去了？</p>
]]></content:encoded>
			<wfw:commentRss>http://jnlin.org/2008/05/07/290/feed/</wfw:commentRss>
		</item>
		<item>
		<title>加班</title>
		<link>http://jnlin.org/2008/04/29/289/</link>
		<comments>http://jnlin.org/2008/04/29/289/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 07:16:00 +0000</pubDate>
		<dc:creator>jnlin</dc:creator>
		
		<category><![CDATA[Mumuring]]></category>

		<guid isPermaLink="false">http://jnlin.org/2008/04/29/289/</guid>
		<description><![CDATA[下午發生了緊急事件，於是就跟老闆還有老闆的老闆還有大神三個人衝到內湖機房，搞到早上五點天都亮了才結束&#8230;OTL其實之前也有在機房加班到凌晨三四點啦，不過這次原因更囧了。haproxy萬歲啊！
另外也因為這次的事件，有幸拜會了B站的老闆，還有傳說中的第N代的BBS。B站的老闆說第一代BBS現在被供奉在公司的辦公桌旁，比起被當成皮球的某「有站」的BBS來說，還真是好命啊&#8230; 
]]></description>
			<content:encoded><![CDATA[<p>下午發生了緊急事件，於是就跟老闆還有老闆的老闆還有<a href="http://blog.gslin.org/archives/2008/04/29/1489/">大神</a>三個人衝到內湖機房，搞到早上五點天都亮了才結束&#8230;OTL<br />其實之前也有在機房加班到凌晨三四點啦，不過這次原因更囧了。<a href="http://haproxy.1wt.eu/">haproxy</a>萬歲啊！</p>
<p>另外也因為這次的事件，有幸拜會了B站的老闆，還有傳說中的第N代的BBS。B站的老闆說第一代BBS現在被供奉在公司的辦公桌旁，比起被當成皮球的某「有站」的BBS來說，還真是好命啊&#8230; </p>
]]></content:encoded>
			<wfw:commentRss>http://jnlin.org/2008/04/29/289/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MySQL (MyISAM) 的備份</title>
		<link>http://jnlin.org/2008/04/23/287/</link>
		<comments>http://jnlin.org/2008/04/23/287/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 17:53:34 +0000</pubDate>
		<dc:creator>jnlin</dc:creator>
		
		<category><![CDATA[FreeBSD]]></category>

		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[Network]]></category>

		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://jnlin.org/2008/04/23/287/</guid>
		<description><![CDATA[當系統小的時候，用 mysqldump 在離峰時間把資料 dump 出來還算可行。雖然 Table 會暫時 Lock 住，但是因為小，所以速度可以很快，鎖住的時間可以不計。但當系統大的時候就不能這樣做了。
好在已經有許多處理這個問題的經驗者。解決這個問題的 Key Point 是「減少鎖 Table 的時間」，因此如果採用的 File System 或是 Volume Manager 有支援快速的 snapshot 功能的話，整個問題就簡單很多。步驟如以下所示：

SLAVE STOP;
FLUSH TABLE WITH READ LOCK;
作 snapshot 
UNLOCK TABLES;
SLAVE START;

如果採用 LVM (Linux), ZFS (FreeBSD, Solaris) 或是 NetApp 的話，整個備份過程可以小於 5 秒鐘，因此可以做到每個小時備份一次而不影響正常使用。如果在 Slave 上做 snapshot 備份，則完全不會影響到寫入（READ LOCK時還是可以讀）。
]]></description>
			<content:encoded><![CDATA[<p>當系統小的時候，用 mysqldump 在離峰時間把資料 dump 出來還算可行。<br />雖然 Table 會暫時 Lock 住，但是因為小，所以速度可以很快，鎖住的時間可以不計。<br />但當系統大的時候就不能這樣做了。</p>
<p>好在已經有許多處理這個問題的經驗者。<br />解決這個問題的 Key Point 是「減少鎖 Table 的時間」，因此如果採用的 File System 或是 Volume Manager 有支援快速的 snapshot 功能的話，整個問題就簡單很多。步驟如以下所示：</p>
<ol>
<li>SLAVE STOP;</li>
<li>FLUSH TABLE WITH READ LOCK;</li>
<li>作 snapshot </li>
<li>UNLOCK TABLES;</li>
<li>SLAVE START;</li>
</ol>
<p>如果採用 LVM (Linux), ZFS (FreeBSD, Solaris) 或是 NetApp 的話，整個備份過程可以小於 5 秒鐘，因此可以做到每個小時備份一次而不影響正常使用。如果在 Slave 上做 snapshot 備份，則完全不會影響到寫入（READ LOCK時還是可以讀）。</p>
]]></content:encoded>
			<wfw:commentRss>http://jnlin.org/2008/04/23/287/feed/</wfw:commentRss>
		</item>
		<item>
		<title>高捷遊記</title>
		<link>http://jnlin.org/2008/04/22/286/</link>
		<comments>http://jnlin.org/2008/04/22/286/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 15:22:07 +0000</pubDate>
		<dc:creator>jnlin</dc:creator>
		
		<category><![CDATA[Mumuring]]></category>

		<category><![CDATA[Photograph]]></category>

		<guid isPermaLink="false">http://jnlin.org/2008/04/22/286/</guid>
		<description><![CDATA[這次趁去墾丁的機會回了老家一趟，也因此搭了高捷。
世運站
高雄車站，高捷的地下車站都有月台門
中央公園站
其實感覺跟台北捷運差不多，不過車廂比較少，所以比較擠。還有就是驗票閘門有點秀逗，三次裡面有兩次單程票沒辦法一次就順利回收，要重新再試第二次才能順利回收。
&#160;
]]></description>
			<content:encoded><![CDATA[<p>這次趁去墾丁的機會回了老家一趟，也因此搭了高捷。</p>
<p><a title="IMG_1878" href="http://www.flickr.com/photos/92537428@N00/2434231412/"><img alt="IMG_1878" src="http://static.flickr.com/3066/2434231412_3059f36bea.jpg" border="0"/></a><br />世運站</p>
<p><a title="IMG_1879" href="http://www.flickr.com/photos/92537428@N00/2434252238/"><img alt="IMG_1879" src="http://static.flickr.com/2367/2434252238_5002bede90.jpg" border="0"/></a><br />高雄車站，高捷的地下車站都有月台門</p>
<p><a title="IMG_1884" href="http://www.flickr.com/photos/92537428@N00/2434272418/"><img alt="IMG_1884" src="http://static.flickr.com/2390/2434272418_90cbd4ed0c.jpg" border="0"/></a><br />中央公園站</p>
<p>其實感覺跟台北捷運差不多，不過車廂比較少，所以比較擠。<br />還有就是驗票閘門有點秀逗，三次裡面有兩次單程票沒辦法一次就順利回收，要重新再試第二次才能順利回收。</p>
<h3>&nbsp;</h3></p>
]]></content:encoded>
			<wfw:commentRss>http://jnlin.org/2008/04/22/286/feed/</wfw:commentRss>
		</item>
		<item>
		<title>這就是網路公司的員工旅遊&#8230;</title>
		<link>http://jnlin.org/2008/04/22/283/</link>
		<comments>http://jnlin.org/2008/04/22/283/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 10:04:18 +0000</pubDate>
		<dc:creator>jnlin</dc:creator>
		
		<category><![CDATA[Mumuring]]></category>

		<category><![CDATA[Photograph]]></category>

		<category><![CDATA[Recreation]]></category>

		<guid isPermaLink="false">http://jnlin.org/2008/04/22/283/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><a title="IMG_1867 by jnlin, on Flickr" href="http://www.flickr.com/photos/jnlinn/2429023979/"><img height="333" alt="IMG_1867" src="http://farm4.static.flickr.com/3122/2429023979_e887b132c9.jpg" width="500"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://jnlin.org/2008/04/22/283/feed/</wfw:commentRss>
		</item>
		<item>
		<title>screenrc 指定視窗 encoding</title>
		<link>http://jnlin.org/2008/04/18/281/</link>
		<comments>http://jnlin.org/2008/04/18/281/#comments</comments>
		<pubDate>Fri, 18 Apr 2008 00:14:18 +0000</pubDate>
		<dc:creator>jnlin</dc:creator>
		
		<category><![CDATA[Network]]></category>

		<guid isPermaLink="false">http://jnlin.org/2008/04/18/281/</guid>
		<description><![CDATA[23:58 &#60;@sunpoet&#62; wens 是新的不能亂洗澡站長。  23:58 &#60;@sunpoet&#62; 原來之前改錯地方，現在 screenrc 裡面可以用 -b/-g 指定該視窗要哪個 encoding 啦。00:06 &#60; NotExist&#62; sunpoet: 你用哪版@@ 我man沒看到 囧rz00:06&#160; * NotExist 想那功能也很久&#8230;.00:10 &#60;@sunpoet&#62; NotExist: 自己 patch &#8230;00:15 &#60;@sunpoet&#62; NotExist: http://sunpoet.net/mira/screen-big5-gbk00:16 &#60;@sunpoet&#62; 像這樣連大神的站 screen -b -t abpe 2 env LANG=C LC_ALL=en_US.ISO8859-1 telnet abpe.org00:20 &#60; NotExist&#62; sunpoet: XD 感謝00:20 &#60;@sunpoet&#62; NotExist: 因為我懶惰 :p00:21 &#60; NotExist&#62; sunpoet: [...]]]></description>
			<content:encoded><![CDATA[<p>23:58 &lt;@sunpoet&gt; wens 是新的不能亂洗澡站長。 <img src='http://jnlin.org/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> <br />23:58 &lt;@sunpoet&gt; 原來之前改錯地方，現在 screenrc 裡面可以用 -b/-g 指定該視窗要哪個 encoding 啦。<br />00:06 &lt; NotExist&gt; sunpoet: 你用哪版@@ 我man沒看到 囧rz<br />00:06&nbsp; * NotExist 想那功能也很久&#8230;.<br />00:10 &lt;@sunpoet&gt; NotExist: 自己 patch &#8230;<br />00:15 &lt;@sunpoet&gt; NotExist: <a href="http://sunpoet.net/mira/screen-big5-gbk">http://sunpoet.net/mira/screen-big5-gbk</a><br />00:16 &lt;@sunpoet&gt; 像這樣連大神的站 screen -b -t abpe 2 env LANG=C LC_ALL=en_US.ISO8859-1 telnet abpe.org<br />00:20 &lt; NotExist&gt; sunpoet: XD 感謝<br />00:20 &lt;@sunpoet&gt; NotExist: 因為我懶惰 :p<br />00:21 &lt; NotExist&gt; sunpoet: 科技始終來自於惰性 :p </p>
<p>感謝 sunpoet，作個備忘。</p>
]]></content:encoded>
			<wfw:commentRss>http://jnlin.org/2008/04/18/281/feed/</wfw:commentRss>
		</item>
		<item>
		<title>TAMAMA~</title>
		<link>http://jnlin.org/2008/04/16/280/</link>
		<comments>http://jnlin.org/2008/04/16/280/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 16:34:02 +0000</pubDate>
		<dc:creator>jnlin</dc:creator>
		
		<category><![CDATA[Mumuring]]></category>

		<guid isPermaLink="false">http://jnlin.org/2008/04/16/280/</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/y4RNoEkNcco&amp;hl=zh_TW"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/y4RNoEkNcco&amp;hl=zh_TW" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://jnlin.org/2008/04/16/280/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MySQL 在 Mtron SSD 上的測試</title>
		<link>http://jnlin.org/2008/04/12/279/</link>
		<comments>http://jnlin.org/2008/04/12/279/#comments</comments>
		<pubDate>Sat, 12 Apr 2008 08:10:45 +0000</pubDate>
		<dc:creator>jnlin</dc:creator>
		
		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[Network]]></category>

		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://jnlin.org/2008/04/12/279/</guid>
		<description><![CDATA[這次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 [...]]]></description>
			<content:encoded><![CDATA[<p>這次<a href="http://www.pixnet.net/">PIXNET</a>進了2顆 32G Mtron <a href="http://www.mtron.net/English/Product/ProductDetail.asp?itemcode=MSP-SATA7035">MSP-SATA70</a>（Spec 上寫的寫入速度為 90MB/s，讀取速度為 120MB/s），裝在 8-way、12G RAM 的 Debian Linux 上，跑 MySQL 5.1 Slave，用 MyISAM 當 backend。最大的 MyISAM Table 大概有 3GB。  </p>
<p>這次一開始就採用 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。  </p>
<p>實際使用上（同時有 SELECT 與 UPDATE），大概 8000 qps 是極限，接著就會遇到 CPU Bound，對於較複雜的 SQL Query （SELECT &#8230; IF EXISTS）會開始卡。如果只計算單純的 SELECT QUERY，則可以到約 15000 qps。</p>
]]></content:encoded>
			<wfw:commentRss>http://jnlin.org/2008/04/12/279/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mtron SSD 在 MySQL (MyISAM) 上跑了兩個小時</title>
		<link>http://jnlin.org/2008/03/27/278/</link>
		<comments>http://jnlin.org/2008/03/27/278/#comments</comments>
		<pubDate>Thu, 27 Mar 2008 10:57:11 +0000</pubDate>
		<dc:creator>jnlin</dc:creator>
		
		<category><![CDATA[Network]]></category>

		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://jnlin.org/2008/03/27/278/</guid>
		<description><![CDATA[果然是一分錢一分貨，拷貝資料庫花的時間比起 SCSI 10k RPM RAID0 少了 2/3。採用與MySQL 在創見 SSD 上的測試同樣的設定，並真正上線灌真實流量進去後，觀察到 CPU Bound 了。 
]]></description>
			<content:encoded><![CDATA[<p>果然是一分錢一分貨，拷貝資料庫花的時間比起 SCSI 10k RPM RAID0 少了 2/3。採用與<a href="http://jnlin.org/2008/03/01/273/">MySQL 在創見 SSD 上的測試</a>同樣的設定，並真正上線灌真實流量進去後，觀察到 CPU Bound 了。 </p>
]]></content:encoded>
			<wfw:commentRss>http://jnlin.org/2008/03/27/278/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
