星期一, 12月 28, 2009

opendir & readdir

#include
#include
#include
#include

int main(){
char path[]="/sys/bus/mmc/devices/";
DIR * dir;
struct dirent * ptr;
int i;
dir =opendir( path );
while((ptr = readdir(dir))!=NULL) {
if( !strncmp( ptr->d_name,"mmc0", 4) ) printf("d_name: %s\n",ptr->d_name);

}
closedir(dir);
}

星期四, 12月 24, 2009

力線通訊轉Wi-Fi的802.11n

盛達電業日前推出了首款電力線通訊轉Wi-Fi的802.11n標準的網路橋接器,該款產品名為BiPAC 2073,是目前市場上還很少見的產品
http://www.ithome.com.tw/itadm/article.php?c=58737

星期二, 11月 10, 2009

PCBMotor

PCBMotor
  • http://www.pcbmotor.com/pi/PCBMotor_O10mm_Stator_dual_sided__1799_.aspx
  • Demo
  • Price 32.5 EU, Prices EUR / Each 200 piece

星期四, 11月 05, 2009

Ejs script 操作方式

Object 的操作方式:

function sqlparser( sqlstr ){
str = db.query( sqlstr )
for each ( i in str ) {
for each ( j in i ) {
write( j + "-" )
}
}
}


db = new Database("sqlite", "/etc/etc/core.db")
sqlstr = "SELECT * from network_ddns"
sqlparser( sqlstr )


<%

function sqlupdate( sqlstr ){
write( sqlstr )
db = new Database("sqlite", "/etc/etc/core.db")
db.query(sqlstr)
}

if( request.method == "POST" ){
// T1 = params['t1']
// T2 = params['t2']
// write( "t1=" + T1 + "t2=" + T2 );
sql = "UPDATE network_interface set Ipv4_DHCP='" + params['t1'] + "', IPv4_Manual_Address='" + params['t2'] "' "
sqlupdate( sql )
}
%>

<form method="POST" action="">
<table class="inputForm" border=0>
<tr>
<td><b>Name</b></td>
<td><input name="t1" type="text" value="good"></td>
</tr>
<tr>
<td><b>Address</b></td>
<td><input name="t2" type="text" value="bad"></td>
</tr>
</table>
<input type="submit" name="ok" value="Ok">
</form>

</body>
</html>

星期四, 10月 29, 2009

一家公司做的IPCam

社群: H.264/AVC

Google 快訊傳來一個學校的網站, 還沒時間看, 先記錄起來

社群: H.264/AVC
本社群起源於清華大學資工系的一門課程,「多媒體編碼技術與應用」,這堂課程之中,讓同學去研究H.264/AVC的程式架構以及原理,並對程式碼加以報 告,以報告的錄音檔以及程式碼的討論 ,皆收錄於本社群之中,提供給想要學習H.264的人一個捷徑,也提供研究者一個討論的空間。


同上,講到 IPTV,資料統計表格到2011年

數位匯流:當TV 遇上Internet (Part 1)

星期三, 10月 28, 2009

sqlite error

  • database disk image is malformed
  • -journal: No such file or directory

Resolution picture


原圖: http://www.ed-china.com/ART_8800034143_400002_500011_HP_2ccc5eef.HTM

星期二, 10月 27, 2009

IEEE 802.11x 參考表格

表格不是那麼精準,不過概略上可以參考。可以稍微比較 802.16 的差異性。
年底WiMax即將開台,適用性如何還待觀望。


-----------------------------------------------------------------------
IEEE 802.11x 參考表格

各種無線技術的規格比較參考表格


Reference:

星期一, 10月 26, 2009

H.264 IPCam

星期五, 10月 23, 2009

百萬美元大獎

某一天的晚上,正在找作業的資料,發現一個有趣的東西【梅森素數表】,簡單來說,它就是指 2^n -1 為質數的數,目前最後一個發現的是 12-Apr-2009,242643801共有12837064位數,覺得很好奇,就自己把 1 - 1百多的所有質數用 Execel 畫出來,看了幾個小時後發現一個規律的公式,當下極其興奮,因為目前僅有47個被發現,若是此一公式能發表就出名了!!
以下是我呆呆看著Execel 幾個小時所歸納出來的:
  • 除了 2、 3以外, 所有的質數必定出現於 5 + 6n 或 7 + 6n
  • ****** 還有一條 ( 秘密 ) **********
搞的我整晚睡不著,急著想找老師問,剛好又遇到假日,想說好吧,再研究個兩天把第二個條件確認,又花了我一個假日,才發現~ 原來那個叫鸞生質數,早在大約公元前300年歐幾里得就已經提出了
存在無窮多個質數 p,有 p + 2 也是質數。

而他的結構是 (6n - 1, 6n + 1) ,仔細想了一下,其實是一樣的 -.-|||

雖然已經快達一千三百萬位的天文數字,不過就梅森素數來說應該還有機會找到,不過要先寫出一個高效能的大數除法。
其中有一些省效能的方式:
  • 排除偶數。
  • 排除結尾為 0、5
  • 找小於√P的質數去除P就能知道是否為質數。

Reference:
美國的克雷研究所更把黎曼假設與其他六個難題,列為「百萬美元大獎」七大問題。
  • http://74.125.153.132/search?q=cache:SzJxcXLpNpcJ:www.twbbs.net.tw/2791478.html+%E8%B3%AA%E6%95%B8%E4%BD%8D%E7%BD%AE&cd=10&hl=zh-TW&ct=clnk&gl=tw
  • Mersenne Prime Digits and Names
  • 孿生質數 WIKI
  • Hints for Using On-Line Encyclopedia of Integer Sequences (or OEIS)
  • 大數分解的方法
    • 1.Rho分解法(The rho factorization method)
    • 2.因數基集分解法(The factor base factorization method)
    • 3.連分數分解法(The continued fraction factorization method)
    • 4.二次篩選分解法(The quadratic sieve factorization method)
    • 5.p-1分解法(The p-1 factorization method)
    • 6.橢圓曲線分解法(The elliptic curve factorization method)
    • 7.代數體篩選分解法(The number field factorization method)
  • 梅森素數表
  • http://www.math.nsysu.edu.tw/seminar/87-2/co3.html

星期四, 10月 22, 2009

Systat Mystat

畫圖用的工具,看起來很專業,不然Execel 粉爛,不能做Paper用的


Reference:
  • http://www.systat.com/Downloads/MYSTAT_Download.aspx
  • http://www.badongo.com/file/14637172

Encoding best Practices for H.264 Video Using Flash

Encoding best Practices for H.264 Video Using Flash

這個不錯、講解很多H.264 轉有名詞(不只264, 通用型名詞也有),稍微帶到原理。
我是用快轉跳著看PPT , 沒很仔細聽他講,節省時間。


Runtime: 01:00:00
Added: 10/05/2009

This expert-driven deep dive will demonstrate how to get the best quality from your H.264 encoding and publishing to the web on the Adobe Flash Platform. Topics will include encoding parameters, analysis, resolutions, dynamic streaming, filtering


Reference:

  • Adobe -http://tv.adobe.com/watch/max-2009-develop/encoding-best-practices-for-h264-video-using-flash/


星期三, 10月 21, 2009

Glossary - Specification

  • Software Requirements Specification, (SPS)
  • Product External Specification, (PES)

Jointwave H.264 Encoder

Jointwave在HYSTA2009展示FPGA/ASIC H.264方案
  • 很爛的網頁,比較沒說服力。
  • Demo 下載也只有 480,宣稱有 1080 怎沒放來看看。
  • Stratix 3, 25k LE 下就可以跑1080P。最高到 Baseline Profile Level 4.2
  • Support OCP socket, 怪怪的不知是不是只有OCP, ARMBUS 不知有沒有
  • Capable of outputting 100Mbps when run at 300MHz
  • Hadamard transform for both intra and inter prediction
    • 阿達馬猜想

      在阿達馬矩陣理論最重要的開放性問題(即尚且無法判斷對錯的問題)是存在性的問題。

      阿達馬猜想: 對於每個4的倍數 n = 4kk 為自然數,都存在 n 階的阿達馬矩陣。

      西爾維斯特構造法給出了階數為1, 2, 4, 8, 16, 32 等等的阿達馬矩陣,之後阿達馬本人給出了階數為12和20的阿達馬矩陣。Raymond Paley 隨後給出了任何q+1 階的阿達馬矩陣的方法,其中q 是任何模4為3的質數任意次冪。他也給出了形式為2(q+1)的阿達馬矩陣的方法,其中q 是任何模4為1的質數任意次冪。他使用了有限域的辦法得出了這些結論。阿達馬猜想很可能就是Paley提出的。現在有了更多的構造阿達馬矩陣的辦法。

      Hadi Kharaghani 和 Behruz Tayfeh-Rezaie 2004年6月21日宣布他們構造出了428階的阿達馬矩陣。現在最小的尚未被構造出來的4k階阿達馬矩陣是668階。

  • One 1920x1088@30~60fps or 6~12 D1 high quality H.264 encoders can be put in one FPGA
  • Maximum 600Mhz on 90nm process
  • Maximum 480Mhz on 130nm process
  • Maximum 300Mhz on high-end FPGA, e.g. StratixIIII, Virtex5
  • Maximum 1080p@60fps on Virtex5 and StratixIIII
  • Ultra low power consumption, 98mw for 1080p@30fps on 90nm process, 20mw for 720p@30fps on 65nm process
High Profile:

H.264 Real-time High Profile Encoder IP Cores

Product ID

E740

E760

Max Video resolution

1280x720@60fps
1920x1088@30fps

1600x1200 30fps

1920x1088 60fps

1600x1200@30fps

Integrated SD/DDR(2) controller

Optional

Share SD/DDR(2) controller through OCP

Optional

External SD/DDR data width

16 or 32bits

32 bits

Frequency (1)
(MHz)

108~152

216~304

On-chip RAM (kbits)

220

220


Reference:

星期五, 10月 16, 2009

機油黏度

黏度是潤滑油最重要的單一性質,但不能單靠黏度去判斷油品的好壞(黏度大小不等於品質)
就如同我們吃麵、粗麵條和細麵條,那一種品質好(粗細不等於品質),我想粗細是沒辨法
分別出品質好壞的,只有個人喜好的問題而以,那我們選擇機油的黏度也是一樣,只有合適
自己的愛車使用的機油的黏度,才是好用的機油。
那何種機油黏度才適合我們的愛車呢?
一般單級黏度大多適合重機械車輛或工廠機械使用,對於低溫起動的要求不大,所以我們
一般人所開的車較不適用。因此我們就以複級機油來討論何種黏度適合我們的愛車。
首先我們先討論W前的數字,常見的有0W、5W、10W、15W、20W,這些數字
代表的低溫流動性,數字愈小低溫流動性愈好,如以歐美為例,冬天氣溫可能低至-20℃
甚至更低,機油在這麼低溫時,不可以結凍,冷車啟動將造成的引擎磨損極大,所以應該
選擇0W、5W才適合。而在台灣的冬天,車子可到達最冷高山,溫度最低也不會低於-5°C,
所以10W、15W即可以應付此低溫,當然0W、5W是更好,不過價錢昂貴,所以歐美
汽車廠建議使用0W、5W,那是因為歐美的氣溫低、車子到了亞熱的台灣,而且全球暖化
嚴重就不必使用價錢昂貴的0W、5W機油。而W後的數字是以100℃時的黏度來作測示、
數字愈大代表黏度愈高,常見的有30、40、50、60。高溫時機油黏度夠才有強韌的
油膜,在機件與機件間潤滑發揮保護機件功能,否則油膜破裂造成機件快速磨損。通常歐洲
北美夏天溫度不常高於30° C,所以較適用#30機油或#40機油,不適用#50機油,因為低溫
使用高黏度,機油流動不佳,反而會造成引擎作動阻力增加,更嚴重因不易流動,機油
沒辨法即時潤滑到機件的每一部位,造成引擎磨損。而在台灣的夏天氣溫很高,從台北
至墾丁最熱約40°C,且一整天持續高溫,所以適用#40或#50機油,如果用#60機油也是可以,
但價錢昂貴,熱帶地區適用,台灣用#50機油已足夠,不必多花冤枉錢。

以上說明還是不清楚的話,那就簡單歸納下列(在台灣)選擇要點讓大家參考。
W前的數字選用要點(in Taiwan):
冬天選0W、5W、10W<>夏天選15W、20W
新車選0W、5W<>一般車輛選10W、15W<>老舊車輛選20W
住高山低溫區選0W、5W<>住平地常溫區選10W、15W、20W

W後的數字選用要點(in Taiwan):
一般車輛或新車選40、50<>老舊車選50
平順操控者選40<>操駕激烈者選50、60
新車無吃機油選40<>車吃機油選50
輕負荷小車選40<>重負荷大車選50、60
短程通勤者選40<>高速公路或長途用車多者選50、60
平路行駛者選40<>常塞車、常慢速爬山者選50、60
欲較省油者選40<>欲引擎較靜者選50、60

以上只是基本選用原則,至於實際上選用還是要根據每個人自己用車情況調整,
還有車廠建議去調整選擇合適的機油。
轉自http://s06150617.pixnet.net/blog/post/24127013




基本上機油的規範可以分為SAE xxW-yy & API SD~SM 兩大規範. 依照引擎潤滑油規範建議 API SL 適合 '01~'04生產的引擎, SM適合'04~以後生產及更先進的汽油引擎使用.

至於 SAE xxW-yy, xxW指的是低溫機油流動性, 0W流動性最佳, 在攝氏-35C還可流動, -30C時只有3250mpas, 5W & 10W分別於-25C & -20C時有3500mpas, 也就是說低溫或冷車啟動時, 機油可以很快的流動潤滑所有機件. yy則是高溫100C時的黏度, 40,50,60 分別代表黏度需要有至少12.5~16.3, 16.3~21.9,21.9~26.1cst;

基於以上規範, 台灣的氣候以一般駕駛方式來說SM 5W-40是非常適合focus的機油, 冬季則可以考慮0W-40, 若是常拉轉速到4500rpm以上的人則可以考慮50 or 60的機油.

另外一點需要注意的是50 or 60的機油分子通常較大, 對於新的引擎而言由於間隙小, 所以大分子較難滲入汽缸間隙, 同時達到高流動性的工作溫度也較高, 反而需要花一些時間暖車讓機油達到合適的工作溫度, 不然對引擎的傷害反而較大.

機油的選擇真的是一門很大的學問, xxW-yy xx小低溫流動佳, 機件潤滑快, 暖車時間短, 引擎阻力小, 較省油; yy大高溫保護性佳, 低溫機件潤滑慢, 引擎阻力大, 較耗油.只有依照個人的需求自己多考量了!

我很想用0W-40但是選擇性太少了! 目前只有看到CPC國產中油.


Reference:
  • http://www.focus-sport.club.tw/viewthread.php?tid=167434&extra=page%3D2
  • http://www.focus-sport.club.tw/viewthread.php?tid=151065&extra=page%3D6&page=3

星期四, 10月 15, 2009

About ME

Profile
Education:
Experience:
  • 1995 - 2000 Captain of R.O.C Millitary
  • 2000 - 2001 Omega - UPS
    • Borland C/C++,UPS Power saving Driver.
  • 2001 - 2003 Coventive - NAS & Setop Box.
    • 8051 Single Chip ( IR/ Timer controll/ RS232 Protocal ).
    • Embedded Linux Porting.
    • MPEG2 video En/Decoder.
  • 2004 - 2007 ComtecSystem - 4/20CHx30fps H.263 DVR & CMS
    • Tiny X Window system / GTK GUI.
    • System Integration - EPIA w/ DOM.
    • Peripheral - RS232/485 、 48 IO with 8255 Board Circuit Design.
    • PTZ ( Lilin/SangSung/Pelco/Dyna ).
    • RTSP Protocal.
    • RD Manager.
  • 2007 - 2009 Pixord - H.264/MJPEG IPCamera
    • IP Camera Design.
    • Project Leader.
  • 2009 - now Security ;))
    • ONVIF (Open Network Video Interface Forum) Implement.
    • To be upgrade.
Major Skill:
  • Embedded Linux:
    • System Integration:
      • C Language.
      • Debugging.
      • System Architecture Design.
      • Kernel/Driver/AP Porting.
      • Inter-Process Communication.
      • Client/Server Networking Programming.
      • Low Bandwith Networking controll.
      • Low Memory System and Complex buffering Mechanism.
    • Image Processing:
      • Video Contain Search.
      • Digital Image Processing.
      • YUV/RGB.
Reference:
  • MY Live~

Contract:
  • Email: jack@cycu.org.tw
  • MSN: ticks0628@msn.com

星期三, 9月 30, 2009

V-Kool 805

車身
V-805 鏡面紫藍色 95% 99% 10% 10%
型號 色系 隔熱率 隔紫外線 透光率 內反射率

前檔
ML-35 隔熱率82%,透視率36%,隔紫外線率99%

星期二, 9月 29, 2009

PHP5 下使用IPC 不能用的問題

Error Message:
  • PHP Fatal error: Call to undefined function msg_get_queue() in /var/www/html/send.php
  • 檢查 /usr/lib/php/modules/ 缺
    • sysvmsg.so
    • sysvshm.so
    • sysvsem.so

Version:
  • PHP 5.2.9 (cli) (built: Apr 15 2009 09:30:33)

Fix:
  • yum install php-process

Recv:
<?php
$MSGKEY = 519051; // Message

$msg_id = msg_get_queue ($MSGKEY, 0600);

while (1) {
if (msg_receive ($msg_id, 1, $msg_type, 16384, $msg, true, 0, $msg_error)) {
if ($msg == 'Quit') break;
echo "$msg\n";
} else {
echo "Received $msg_error fetching message\n";
break;
}
}

msg_remove_queue ($msg_id);
?>



Send:
<?php
if ( sizeof($argv)<2 ) {
echo "Usage: $argv[0] stat|send|receive|remove msgType MSG [msg] \n\n" ;
echo " EX: $argv[0] send 1 \"This is no 1\" \n" ;
echo " $argv[0] receive ID \n" ;
echo " $argv[0] stat \n" ;
echo " $argv[0] remove \n" ;
exit;
}

$MSGKey = "519051" ;

## Create or attach to a message queue
$seg = msg_get_queue($MSGKey) ;

switch ( $argv[1] ) {
case "send":
msg_send($seg, $argv[2], $argv[3]);
echo "msg_send done...\n" ;
break;

case "receive":
$stat = msg_stat_queue( $seg );
echo 'Messages in the queue: '.$stat['msg_qnum']."\n";
if ( $stat['msg_qnum']>0 ) {
msg_receive($seg, $argv[2], $msgtype, 1024, $data);
var_dump($msgtype);
var_dump($data);
echo "\n";
}
else {
echo "No Msg...\n";
}
break;

case "stat":
print_r( msg_stat_queue($seg) );
break;

case "remove":
msg_remove_queue($seg);
break;
}
?>


Reference:
  • http://tw.php.net/manual/en/function.msg-receive.php

星期一, 9月 28, 2009

CamCoder

  • 1080P
  • HDMI out
  • Max 32M SD card
  • 型名
    「GC-FM1」
    記録メディア SDカード/SDHCカード
    動画/音声記録・再生方式 (映像) MPEG-4 AVC/H.264(MOV)
    (音声) AAC
    撮像素子 1/3.2型CMOSセンサー
    総画素数 817万画素
    有効画素数 動画時203万画素/静止画時799万画素
    液晶モニター(画素数) TFTカラー液晶 2.0型(11.5万ドット)
    静止画記録(最大) 3264×2448(799万画素)
    ズーム倍率 デジタルズーム4倍
    手ブレ補正 電子式(動画時)
    出力端子 USB2.0(ミニ)、HDMI出力(ミニ) 、AV出力(φ3.5mmミニプラグ)
    内蔵PCソフトウェア MediaBrowser LE
    内蔵バッテリー撮影時間※5

    連続撮影時間:約1時間36分 実撮影時間:約48分

    外形寸法

    (幅)53×(高さ)97×(奥行き)17mm
    (最大突起物含む、ストラップ含まず)

    本体質量 約95g(撮影時質量:約100g/ ストラップ、メモリーカード含む)


星期四, 9月 24, 2009

星期四, 8月 27, 2009

射手撥放器

射手撥放器 - 帶有 Source code. (GPL)

http://shooter.cn/svplayer/svn.html
查看SVN版本更新记录: http://trac.splayer.org/log/

星期六, 8月 08, 2009

中原大學與Google 合作開放校友新申請Email

為進一步提供您更完善、更穩定、且容量功能更強大的的服務,中原大學永久信箱將與Google Mail合作服務,信箱容量提高到7GB ,後續之申請與管理仍由學校控管。謝謝您使用中原大學永久電子信箱。

http://itouch1.cycu.edu.tw/active_system/sendRedirect/gmail.jsp

申請後帳號為 xxxx@cycu.org.tw , 要搶名字要快喔!

星期一, 7月 13, 2009

群組判定


將特徵拉出來,波形如下,上半部可以看成是MB Histogram. 下半部是異變值.


下面兩個群組,每一行 9 個值,共七行。
可以看到紅色的部分是群組一跟群組二不相同的地方,但整個群組又很相似。
  • 第一次出現:
      -1 -24 0 0 45 0 -2 34 0
      0 12 0 0 53 0 0 -77 0
      0 -56 -1 0 10 0 -1 11 1
      0 0 0 0 4 0 0 -4 0
      0 4 -1 71 54 0 1 -11 0
      0 -5 1 73 6 1 0 69 0
      4 22 13 -46 4 40 13 20 0
    • 第二次出現:
      0 -25 -1 0 45 -1 0 32 0
      0 13 -1 0 53 0 -1 -77 0
      0 -54 0 0 13 0 0 11 0
      0 0 0 0 5 1 -1 -3 0
      0 2 0 70 53 0 1 -8 -1
      0 -5 1 74 6 0 3 66 1
      6 22 13 -45 0 43 11 20 0

    星期日, 7月 12, 2009

    NVIDIA Widget驅動程式




    星期五, 7月 10, 2009

    SDL library

    於 Ubuntu 9 使用 FFMPEG、 SDL 及 X11所需套件:
    • libsdl1.2-dev
    • libsdl1.2debian-all
    • libX11-xcb-dev
    • libX11-xcb1

    星期一, 7月 06, 2009

    嵌入式 ARM 平台與 SoC 兩三事

    配合文中主題,Google找張圖放放,哈!這把叫九環刀。

    這兩天看到廣告 Jserv 在 TWNIC 開的課,這類的課程很快就額滿了,看來外面需求不小(尤其是免費的,哈!)。

    這兩天 703 的一位同學問我一個問題,他要畢業了想走 Firmware,但不知從何入手,我跟他說:你都要畢業了才想, 有點慢,如果想走Firmware,之前朱老師開設的 SOC 課程。這門課太超值了,在學學生修又不用錢,應該就去上上,不要看老師在大學部是一個大刀,其實這個老師是很愛護學生的,而且簡直是傾囊相授、知無不答,這不誇張!如果你去外面學或是在工作上請教前輩,通常都會【暗槓】兩招,有些東東還是要自己去摸。也許是這門課程廣告打的不夠,知道的人太少,也許學生們可能不知道自己該學些甚麼,但到了要畢業才想到這問題可能點慢。

    如果對於 ARM or MIPS 有一定程度的瞭解,加上基本的C概念,只能說對處理器架構熟,要開始入手是可以很快的,然而當兩邊都不太行的時候,要走嵌入式 RD 就有點辛苦了,加上現在越來越多人摸這一塊;) 當然也不是不行,只是入門時間關係到薪水調升的時間。

    朱老師的大學生就有一定程度的基本硬體知識,更不要說是他的碩士生了,而一個兩邊都不太熟的碩士生要來競爭這一塊,自然就比較劣勢了,不過這只針對剛踏入社會的新人,也要看個人學習心態,若你有決心,每天操到晚上 12 點,這個劣勢一年內定可扳回。RD不就是這樣?哈!當然你如過目標只是每個月領個4,5萬,那就不用那麼辛苦了,碩士 RD 出去混一混不要太過頭應該就有這個價碼。


    Reference:

    星期五, 7月 03, 2009

    MicroSoft SkyDrive

    Microsoft SkyDrive 優點:
    • Total : 25 GB
    • 單一檔案 最大 50M
    • web 上傳
    • 使用 MSN 帳號
    • 有 https
    • 搭配 Chrom ( Google browser ) 酷!




    星期一, 6月 29, 2009

    公司演講 The story of H.264 and MPEG serial

    2009/6/29 (一)

    時間:2009/06/29 13:30 - 14:30
    主講:Jack
    參與人員:公司同仁

    這次準備資料約 2HR,文章中的專有名詞需要多注意,打上去的東西必須要每個縮寫都了解他的來源及定義,對於內容的順序性在最後要在作修正,根據不同的參加人員講解不同的內容。

    星期六, 6月 27, 2009

    FileZilla 所使用的 GUI Library

    FileZilla Dependency Installed:
    • tinyxml.x86_64 0:2.5.3-4.fc11
    • wxBase.x86_64 0:2.8.10-1.fc11
    • wxGTK.x86_64 0:2.8.

    星期一, 6月 22, 2009

    Surveillance terms


    • ONVIF - Open Network Video Interface Forum.
    • WSDL - Web Service Description Language. [WSDL1.1]
    • WDR - Wide Dynamic Range.
    • SOAP - Simple Object Access Protocol [SOAP 1.2, Part 1]

    • NVC - Network Video Client.
    • NVT - Network Video Transmitter.
    • OASIS WS-BaseNotification


    Reference:

    星期五, 6月 12, 2009

    HyperV and VMWare 測試報告

    2009/6/12 (五) 陰天

    這幾天研究了一下要跑 Virtualization Technology的軟硬需求:

    HOST OS: 就是主要掌管 Guest 的主要 OS
    GUEST OS: 子 OS 被 HOST 管/的 OS
    哈! 這樣清楚明白瞭解喔~~ 不懂??
    For Example:
    • 在 Win Server 2008 下灌 xp 32 + Linux Fedora ... xp32/Fedora 就叫 guest os, Server 2008叫 host os.

    硬體需求:
    • 主機板Bios 要有Support :詳細名稱不知道,不過我的是 Execute Disable Bit,有可能是Enable Intel-V / AMD-V 之類的,我的主版是P5B-VM SE,CPU:Intel E6420 Ram:DDR2 8G
    • 北橋 Memory Remap Feature 要開,開了才能突破 4G.
    系統需求:
    • OS : 跑VMWare Server/Workstation 不管那種OS,但 ESXi & HyperV 要跑 XP 64bit or Server 2008,這兩個都是獨立OS,而且硬體Driver抓不到很麻煩,但有支援半虛擬化,效能上會較好。
    • 至於為何要64bit,因32Bit 定址問題,只能定到3G多我看跑VM也是吃力。
    • 目前是打Host / Guest 的 虛擬記憶體通通關掉,因為還蠻大的 ;)
    軟體分類:
    • Windows XP 64 bit + VMWare Server 2.0
      • Workstation 6.5- 要錢的
      • Server 2.0 - 免費的:
        • 這是用網頁來呈現控制中心,Host端龜龜的,Guest端開Full Screen 還ok 蠻順的。
        • Guest 開三個都還能接受,每個1 cpu , 2G Ram,至少滑鼠是順的
          • Windows XP 64 跑
          • Windows XP 32 跑暗黑II
          • Fedora 11 64bit
      • ESXi - 也是免費的,跟HyperV 類似的做法,要有Bios/CPU 的 Intel-V or AMD-V Support
    • Windows 2008 Server + HyperV
      • HyperV Server 2008 - 這套是微軟大放送的,免費,不過只有文字介面,我裝好後竟然抓不到網卡,又只有文字介面,不知道要用甚麼Command 去搞,又抓不到網卡,有點難搞,放棄。
      • Windows Server 2008 - 內建HyperV,這個有內建Desktop,用WINDOW 操作會好些,這個模式下感覺Windows Server還蠻穩的,不知道是不是錯覺,整個不像XP了,也不像2000 Server,我落伍了-.-
        • 慘!Server 2008 內建DirectX 10,我顯卡是內建的Intel GMA3000,只支援到DirectX 9,所以也沒得測了,前幾天看到燦X賣一塊 Nvidia 9600GT 2GDDR2 2780 @@真想敗下去,跑個HyperV + 雙螢幕來瞧瞧。
        • Host 端的 Server Manager的管理介面在 Collecting data 一樣要等,比VMware好的是,滑鼠不會卡死,整個系統卡著的感覺,不過安裝XP32時....Guest超龜,VMWare都沒這個問題,原本裝XP32只要半小時,裝了一小時才好,感覺上是 IO 龜住了。
        • 打開 Host 的 Resource Overview看,Disk overHead很高,奇怪了,VMWare也是用 Virtual File 來做就不會這樣,讀取好像正常,寫入就很龜了。
        • 終於灌好了,失望,沒有別的了,光滑鼠都輸人家。
        • 嘗試著更新所有東西看看有沒救。
          • KB950050 HyperV update.
          • update all
          • 通通最新了,重裝一次XP 32.....結論是,我要趕快殺掉 Server 2008 + HyperV ....爛爆了,光XP32一開始的安裝藍畫面就龜到爆,後面的操作就不用講了,本還想多試幾個東西,跑成這樣.....放棄。【微軟】果然是名不虛傳。
    • Windows 2008 Server +VMWare Workstation 6.5
      • 首先要將剛剛裝的HyperV 弄走,移除又很龜,順便看看Workstation跑的如何。
      • 拿之前在XP64 + VMWare server 2.0做的 XP 64/32 Image 跑看看。
      • 金頂電池的兔子!我只想到這個,我的滑鼠像是裝了這個電池,【筋蹦】!!。
      • 超順,比Server 2.0還順,不知道是不是錯覺,打暗黑的時候,哭簍怪跑好快,感覺像開了加速器,真的很快,不過D3D還是沒開,不知為何,設定檔也改了。
      • 不過這可能是Server 2.0 / Workstation 6.5 的差異,不一定是 XP 64 / 2008 Server的差異,因為有兩個變數。
      • XP64下試了一下 一樣快。
    • Fedora 11 64bit + VMWare Server
      • 這個模式有點難搞還要Compile,想到就暈。
      • Linux 下還有KVM/Xen 等可以弄,請參閱鳥哥。
      • 推薦一下Fedora 11 剛出喔~~ 開機20秒,畫面還ok。
    FAQ:
    • 裝ESXi 發生怪問題,HyperV 也是。
      Failed to load lvmdriver: 看來是網卡問題導致。
    • 暈倒,完到最後發生一個麻煩的事情,灌了太多OS,整個MBR 及 OS 亂掉,出現 Ntldr is Missing 導致不能開機,解決方式如下:
      • 找回原廠CD 按 R 進CONSOLE修。
      • CP [CD DRIVE]:\I386\NTLDR C:\
      • CP [CD DRIVE]:\I386 \NTDETECT.COM C:\
      • fixmbr, fixboot, bootcfg 等命列斟酌用。 不知道怎用就辜一下吧 or HELP.

    結論:
    • 要打Game 另外割一塊好,我用 Host: XP64 + Guest : XP64 打暗黑很順(VMWare Server 2.0),但要跑Direct3D能解但有問題,粉龜,使用DirectDraw 的Game 沒問題,Direct3D則要開選項,並加大顯卡memory,也就是要吃Ram啦。
    • 實在是沒有那麼多時間都玩一次,只依我的需求去看,結論是 XP64 + VMWare 來跑最佳。
    • 我是一個Embedded Linux 的工程師,平常也都在Linux下環境操作,攪了那麼久,雖然 不愛在Windows 上Coding,但它真的是...讓人容易操作,這應該是為啥Linux一直為何搶不下的原因,先不管Open office的問題,操作上一下子那有問題一下子缺啥的,MicroXXX在這塊真的是做的比較好,雖然他甚麼都沒有,只有一個OS + IE,加灌個Office其實一般人要的只是上網跟文書吧。

    Reference:
    To be continue...

    星期三, 6月 03, 2009

    13年前的 零分

    引用圖片 http://www.meishichina.com/Health/UploadFiles/200812/2008122614102155.jpg
    突然想放一張雞蛋的圖片

    2009/6/3 (三)

    今天早上是博士班逕讀口試的日子,教授這個 【為甚麼那麼多零分】 的問題真的是讓我印象深刻。

    13年前當我再就讀二專時,其實算是一個不用功的學生,還記得當時所使用的Linux 是 Slackware,為了灌這套 OS,花了一整天用十幾片 5.25 的磁片在灌(因為我的電腦是 386sx-16Mhz),為了就只是他的多工(雖然當初只會ls) ^^,因為當時只有DOS好用,翹課在家打電腦,所以拿了一個 0 分。

    13年前,家中沒有ADSL,上網只能用1200 modem 撥接,為了上Internet打MUD,提升等級,達到巫師的等級可以用C語言撰寫房間,翹課到計算機中心打MUD,所以又拿了一個 0 分。

    13年前,由於學費要貸款,要半工半讀,還兼差幫同學寫期末程式(當時一個人收5000塊,一次收了四個,一個人寫了 4 個Project),導致連考試都放棄了,有些課都翹掉了,又一個 0 分。

    ...那麼多藉口,不過還是很多 0 分,哈。

    問我後悔以前不學好,拿了那麼多 0 分嗎? 不 ! 這些 0 分是有代價的。

    沒有這個 0分,我不會那麼早接觸 Linux。
    沒有這個 0分,我不會那麼早接觸 Internet。
    沒有這個 0分,我不會知道原來以前我 0 分......。

    星期六, 5月 23, 2009

    Using cwrsync for synchronization data

    Using RSYNC clinet ( Windows platform: cwrsync ) synchronization data:
    There are no GUI for now, all Text interface。
    • Windows Side RSYNC client/server: SourceForge DOWNLOAD.
      After download then install it。
    • Upload
      • Windows:
        rsync -avrHS --progress --delete ./go 192.168.1.100::test
      • Linux:
        The same as Windows.
    • Download
      • Windows:
        rsync -avzHS username@FROM_IP:/SOURCE_PATH /TARGET_PATH
      • Linux:
        rsync -avzHS -e "ssh -p SOURCE_PORT" username@FROM_IP:/SOURCE_PATH TARGETPATH
    • --delete,Be Care!!! It will be delete files, using it when u know what r u doing
    • Install and start SSH in Target machine。It will ask u password during procedure。
    Server Side rsyncd:
    • Install and find execution file below \Program files\ICW.
    • Create rsyncd.conf and put to bin.
    • mkdir.exe /etc; cp.exe rsyncd.conf /etc
    • rsync --daemon
    • ps.exe aux (check it! is rsyncd running? ).
    • Finished.

    Reference:

    星期五, 5月 22, 2009

    Windows 下 L2 Cache

    打開L2 Cache 的方式:
    • 首先要知道你的 CPU L2 有多大.
    • 打開 regedit
    • 修改下面的值 (單位)
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\SecondLevelDataCache
    • OK , 重開機.

    星期一, 5月 18, 2009

    學乖

    二年了,就讀碩專兩年了,直到今天才體會,為何每堂課的教授都要求作業要以論文的格式來寫,真的是台上10分鐘;台下十年功,平常累積起來的學習經驗,真的是有一天會用到。如果未來還要走在學術界,無論是當學生、老師、顧問這一類的,往後勢必要拿出一些能代表自己所擁有專業的證明時,就考驗著當初下了多少苦心寫的文件了,沒有過往的文件只靠嘴巴講講,沒有那麼容易讓人【信道】。這次為了繳交報名資料,光是寫幾頁的文件,花了好幾個日夜,無論是排版、文字的運用、該呈現的資料等撰寫的技巧,若是經過課堂報告的練習,定不會如此狼狽。

    期間參考到一篇 政大 莫建清先生 所寫的【研究論文撰寫的方法與技巧】,不看還好,看了發現寫文章更是另一門學問。文中提到美國應用語言學家HatchFarhady (1982:1)給「研究」所下的定義是:「用有系統的方法與步驟,找出問題的答案(a systematic approach to finding answers to questions)」。工作上的程式撰寫與做研究也有相同之處:觀察問題、假設、猜測發生原因、求證,而文件就是要讓這一系列的動作能讓他人複製出相同的結果,雖然我們的重點放在學科的研究上,對於未來Paper 發表上,還是要在平常多花點時間練習。


    學一次乖!未來的課業寧可一學期只出一份能拿的出檯面的報告,也不要草草了事的交出 5 份作業,至少還有一份讓人能看的點頭。

    星期五, 4月 24, 2009

    SecuTech Expo 2009 台北國際安全博覽會 觀後感

    SecuTech Expo 2009 台北國際安全博覽會,參觀了不少Surveillance 廠商,其中當然免不了有一些賣奇怪東西的廠商,例如:消防器材、防身電擊槍…etc,還有極少數的廠商如學校單位提供技術轉移,PTZ機構馬達等週邊廠。

    在場的DVR的廠商,大多所展出的商品都還停留在 Resolution D1/CIF的規格,由於近年來LCD電視規格提升至1920x1080,畫面輸出部份已有頃向將數個D1 or CIF 的小畫面組合成 1080p/I 再輸出至Full HD 的電視畫面。就Video Server的功能性,其實跟DVR相去不遠,除了少了顆硬碟與儲存功能,幾乎跟DVR沒甚麼兩樣,也造就了如:NVR( Network Video Recorder)等許多的怪名詞。

    IPCam 的部份,今年所主打的Mega H.264 的廠商也不算少,但看的人都集中在某些攤位,然而公司的產品也還是有不少人去看,當場看到了幾個現像是值得注意的。

    Surveillance:

    l 某些小公司一樣有Demo H.264IPCAM 卻沒人駐足,攤位小連看的人都沒有,不過我在那看,其實畫質及操控並不輸我們的產品,雖然產品好很重要,但畢竟我們還不是世界大廠,攤位大小、門面也非常重要。

    l UI 的簡化是一個驅勢,旁邊偷聽了一些在詢問廠商設計問題的客戶,很多都是畫面操作的問題,而會場上所展示的畫面,大多也幾近無設定的畫面,畢竟大多數的使用者設定完後就不太會去動了,實在是很少使用設定。

    l Object TrackingVideo contain analysis 不少,但大多是Windows plateform下以Software Application 模式下運算,極少數以Hardware 方式實現。

    l 3G mobileTwo-way Audio via SIP protocolPoE(802.3af) 等幾樣規格也漸漸上了IPCam,似乎是要把所有的規格弄進小小台的IPCam 才爽、才叫高級,不過真的有多少User在問在看是個問號?大家走來走去可以聽見的是都在看畫質、即時性、FrameRateCPU損耗等議題。

    Digital Home:

    l Home care :
    不少整合商將數種異質性產品整合,朝居家安控發展,雖然這已推廣多年,但都是換湯不換藥,一樣的東西,沒有一點創新,跟中X保全、新X保全所能提供的沒啥兩樣。

    l New Item
    其中在會場中遇到一間叫Netvox,雖然那個看起來像經理的愛理不理,態度極差,不過我還是追著他猛問,這家在做ZigBee( IEEE 802.15.4) RF Module,其中有另一間KOBI IZEX-KOBI Technology Co., Ltd.也引入ZigBee的概念,目前項應用在監控甚少看到人整合。ZigBee,可將週遭的Sensor 狀態,透過低功率無線傳輸至ZigBee AP,再由AP Internet,然而只需要用電池就可以維持 1~ 2年的使用時間,目前要使用無線I/O 這個低價又可以無線傳輸,更有綁規格的機會,成本又低,不知道為何沒有幾家在整。

    l Door phone
    有幾間在做Door phone,其中有簡易型,有搭配MID(Mobile Internet Device),利用MID可隨處上網的特性,直接將Stream/家電/Sensor 等納入,達到Digital Home Controller Center 的概念,但不論是簡易型還是高級型,由於MID or mini LCD都約為5 ~ 9吋畫面且不易關看,畫面UI 看起來都是需要美工處理,而非文字型態,在Embedded Linux下侼為棘手,有時甚至會受限平台,故平台需慎選。

    Plateform Design:

    l H.264 SOC chip:
    這次有看到TI TMS320DM3xx 系列,由歐普羅代理,該RD指出 IP Camera Reference Design要到六月份才有,現在買Board沒甚麼用。不過要是跟他們買,Windows AP 沒有Source Code,我看一點也沒用 @@,有問題又不能改,看來要用源頭還是在TI

    l DM指出 Vivotek 其中有一款型號如下,不過沒看到機器:
    型號: IP8161: 2Megapixel x H.264
    CPU: TI DM365 Soc
    Flash:128MB
    Ram:256MB
    OS:Linux 2.6
    Format: H.264/MPEG4/MJPEG
    MAX Resolution: 1600x1200x10fps

    Conclusion:

    1. 會場中不乏MPEG4產品,也有人在比較Performance議題,然而在 CMS整合廠商中,多組IPCam/DVR影像的輸入所耗費的CPU資源直接影響到CMS所呈現的效果,雖然H.264在儲存空間、使用頻寬等皆佔有許多優勢,然而在 Windows plateform Software Decode效能、價格與MPEG4相較卻略遜一截。

    2. 同第1點所述,PM及業務方面是否有釐清目前公司方向,H.264平台客戶的需求,亦或客戶群皆為價格導向,對於壓縮平台是否著重於H.264/MPEG4 的差異,IPCam本身的特性並不提供錄影儲存媒體,然而在Windows Client端,目前Storage Size 也日趨龐大,價格也幾近論斤賣,若能以低價取得相同的畫質,MPEG4也不失為一個選擇。但H.264也代表著公司開發技術能力,如何在有限資源下達到相同的效果,也是屬於一種不可缺少的指標性產品。

    3. IPCAM 作到幾近DVR的強大功能,使得Spec能條列出多功能亦是不錯,但倘若將火力集中於開發大多數客戶想要的功能,是否能發揮更大效益,是否遠比開發出數十個沒用的小功能更具有賣像?

    4. 爾後的展覽應派遣RD駐場,雖然大多的問題公司內FAE/PM等都能回答,但在會場觀察了幾個小時,不論是公司大小,大多的公司在被詢問到較專業性問題時,該公司即派當場RD回覆,除了能提升公司專業領導的品牌形像,對於客戶再次詢問詳細問題的意願也較高。

    5. 人臉及行為模式的辨認似乎有不少買家(掛菊色的牌子)在看,這個功能在Windows端也能做到,是不是要在Server端處理就只能看Plateform provider了,雖然目前公司沒有人力做這塊,然而這很像是趨勢,需要高度觀察。

    星期一, 4月 20, 2009

    NoneBlock sendfile


    一般copy 的狀況下
    1. 從HW 的資料透過DMA 搬移至Kernel
    2. 再從 Kernel 搬至User space,送到Socket 時再搬依次。
    3. CPU Copy x 2 + DMA x 2
    使用mmap + write 的狀況:
    • 從HW 的資料透過DMA 搬移至Kernel
    • 直接從 Kernel space 將Buffer搬至Socket buffer。
    • 缺點:當User/Kernel space 兩塊同時操作時須有解決方案,多了sendfile 一次的context switch。
    • 優點:當要送至socket時有sendfile的效能,user space也能存取資料。
    • 花費:CPU Copy x 1 + DMA x 2

    使用Sendfile 的狀況:
    • 從HW 的資料透過DMA 搬移至Kernel
    • 直接從 Kernel space 將Buffer搬至Socket buffer。
    • 缺點: User space 無法取得資料。
    • 花費:CPU Copy x 1 + DMA x 2
    較佳的方式:
    • 從HW 的資料透過DMA 搬移至Kernel
    • 利用HW support gather 的方式,直接從 socket/kernel dscr pointer 利用DMA gather的方式將資料直送底層。
    • 這個步驟目前還不確定方式,目前看來從AP層好像沒有現成的,要從Driver request DMA channel,setup, start 等動作,要找一下。
      asfd
    • 缺點: 需要HW support。
    • 花費:DMA x 2

    DMA的操作,基本上DMA的動作,需要follow HW Handshaking,基本上會跑類似下列流程:

    • request_dma()
    • dma_setup_handlers()
    • dma_config_src()
    • dma_config_dst()
    • dma_setup_single
    • dma_enable
    • ==> wait for transfer complete event
    • dma_disable
    • dma_free
    • MultiBlock 的話還需要設定 setup_sg or setup_mlist








    下面例子用以前寫的socket function測試,listen/connect 不列出來了,主要是測試 NoneBlock sendfile 的狀況,以及 EAGAIN 旗標產生的主因。( client/server在同一台機器)

    以下四種狀況都會影響到Client side 每次下send 的大小。
    • Client 端 connect target ip = 192.168.1.85 or 127.0.0.1
    • Server端收到就丟棄。
    • Server端收到後存檔。
    • Server端收到後印出收到Size。

    Server Side Code:

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

    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>


    int fd, times=0;
    void callback( int fd, unsigned char *buf, int size ){
    // printf("MyFunction:\n FD[%d] str=%s size=%d\n", fd, buf, size );
    // printf("[%d] MyFunction:\n FD[%d] size=%d\n", times, fd, size );
    // fd = open("server.dat", O_WRONLY | O_APPEND );
    // write( fd, buf, size );
    // close( fd );
    times++;
    }

    int main( int argc, char ** arg ) {
    SOCKET_SERVER server;
    int ret;
    system("rm server.dat;touch server.dat");
    // use User Define Callback
    #if 1
    ret = server.initServer( 9600, callback );
    #else
    ret = server.initServer( 9600);
    #endif
    printf(" server ret =%d\n", ret );

    while ( 1 ) {
    server.clientList();
    sleep(3);
    }
    return EXIT_SUCCESS;
    }



    Client Side Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <socketClient.h>

    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <sys/sendfile.h>
    #include <errno.h>

    int main( int argc, char ** arg ) {

    SOCKET_CLIENT client;
    int ret;
    int fd;
    //init sock
    //ret = client.initClient( "127.0.0.1", 9600 );
    ret = client.initClient( "192.168.1.85", 9600 );
    if( ret != EXIT_SUCCESS ){
    printf("Client create FAIL ret=%d\n", ret );
    }

    //send mydata
    fd = open( "mydata", O_RDONLY);
    int times=0;
    size_t r;
    off_t offset = 0;

    struct timeval tv;
    fd_set wfds;

    while( 1 ){
    FD_ZERO( &wfds );
    FD_SET( client.m_iFD, &wfds);
    tv.tv_sec = 1; tv.tv_usec = 0;
    ret = select( client.m_iFD+1, NULL, &wfds, NULL, &tv);
    if ( ret <= 0 ) printf("timeout or ret=%d\n", ret );

    r = sendfile( client.m_iFD, fd, &offset, 1024*1024);
    if( r == 0 ) break;
    if( r == -1 ){//&& errno == EAGAIN ){
    printf("EAGAIN\n");
    continue;
    }
    printf("[%d]sendfile offset=%d r=%d \n", times,(int)offset, r);
    times++;
    }
    return EXIT_SUCCESS;
    }



    Run: 可以看到連下兩道後的結果並不相同,但Server端是相同的,且不會出EAGAIN,EAGAIN發生的時機點為連下兩道sendfile才會發生,select 當次即使是送不完也不會發生。也就是說EAGAIN這個flag 是在ret = -1 時產生,buf 裡的位置為0 才會發生。
    [root@192 ipSock_noneblock_sendfile]# ./client
    [0]sendfile offset=1048576 r=1048576
    [1]sendfile offset=2097152 r=1048576
    [2]sendfile offset=2179072 r=81920
    [3]sendfile offset=2785280 r=606208
    [4]sendfile offset=2949120 r=163840
    [5]sendfile offset=3112960 r=163840
    [6]sendfile offset=3276800 r=163840
    [7]sendfile offset=3440640 r=163840
    [8]sendfile offset=3604480 r=163840
    [9]sendfile offset=3768320 r=163840
    [10]sendfile offset=3932160 r=163840
    [11]sendfile offset=4096000 r=163840
    [12]sendfile offset=4259840 r=163840
    [13]sendfile offset=4423680 r=163840
    [14]sendfile offset=4538368 r=114688
    [15]sendfile offset=4685824 r=147456
    [16]sendfile offset=4833280 r=147456
    [17]sendfile offset=4964352 r=131072
    [18]sendfile offset=5095424 r=131072
    [19]sendfile offset=5226496 r=131072
    [20]sendfile offset=5554176 r=327680
    [21]sendfile offset=5898240 r=344064
    [22]sendfile offset=6045696 r=147456
    [23]sendfile offset=6193152 r=147456
    [24]sendfile offset=6324224 r=131072
    [25]sendfile offset=6455296 r=131072
    [26]sendfile offset=6586368 r=131072
    [27]sendfile offset=6717440 r=131072
    [28]sendfile offset=6848512 r=131072
    [29]sendfile offset=6979584 r=131072
    [30]sendfile offset=7110656 r=131072
    [31]sendfile offset=7241728 r=131072
    [32]sendfile offset=7372800 r=131072
    [33]sendfile offset=7503872 r=131072
    [34]sendfile offset=7634944 r=131072
    [35]sendfile offset=7766016 r=131072
    [36]sendfile offset=7897088 r=131072
    [37]sendfile offset=8028160 r=131072
    [38]sendfile offset=8159232 r=131072
    [39]sendfile offset=8191034 r=31802
    [root@192 ipSock_noneblock_sendfile]# ./client
    [0]sendfile offset=1048576 r=1048576
    [1]sendfile offset=2097152 r=1048576
    [2]sendfile offset=3145728 r=1048576
    [3]sendfile offset=4194304 r=1048576
    [4]sendfile offset=4538368 r=344064
    [5]sendfile offset=5586944 r=1048576
    [6]sendfile offset=6635520 r=1048576
    [7]sendfile offset=7684096 r=1048576
    [8]sendfile offset=8191034 r=506938


    Conclusion:
    • 查了一下原因,也許跟下面有關,不確定,把wmem_max值加大,當busy時send出去的值就會接近設定的值。
      cat /proc/sys/net/core/wmem_max
      131071
    • 為何要用sendfile
      1.減少TLB cache flush,使用read/write function會導致 cashe 異動。
      2.減少kernel/user space context switch 次數。
      3.Copy 次數減少。
    • 長遠來看 IPCam/ DVR 長時間處理影像傳輸,應該使用第四種方式,減少CPU Loading,除了增加Performance,還可以增加 Client 的 Throughput。