2017年11月13日 星期一

[筆記] SFF-8472,關於 SFP 的 DDM 協議

找了幾次關於 SFF-8472 的資料,但是突然叫我講這是什麼好像又一時之間難以啟齒,所以把一些細節整理起來。

SFF-8472 是針對光學的小型封裝元件(Small Form Factor)所作的數字診斷監控(DDM,Digital diagnostic monitoring)的多源協議,詳見 http://blog.sina.com.cn/s/blog_159035dd00102x27w.html

SFF-8472 規定在 EEPROM 的哪些位置,應該要放置哪些值,這就大概是整個 SFF-8472 的內容。

(圖取自 SFF-8472 協議之 pdf http://www.jstt.com.tw/upload/files/SFF-8472.PDF

我比較需要的資訊都在 A0h 的前 96 bytes,像是Type of transceiver、SFP vendor nam、Vendor OUI… 等等,表格內容一樣在 pdf,剩下的就不贅述了!

2017年10月2日 星期一

網路磁碟一直顯示為 offline,無法讀寫

連接 SAN 中的網路硬碟時,如果硬碟還未初始化,
這時從 windows device manager 看,有時候會看到硬碟是 offline 的狀態。

理論上此時只要滑鼠右鍵點硬碟,選擇 online,就會像下圖 Disk 7 一樣顯示 “not initialized”
此時 IOMeter 其實已經可以對這些硬碟做 IO performance 測試。

但是我遇到了不管怎麼按 Online,就是沒有反應的情況!
原來可以使用 command line 直接下指令強迫磁碟 online
  1. diskpart
  2. select disk <#>
  3. online disk
如果 Disk online 之後還是遇到只能讀,無法寫的狀況,
在 online disk 之後多加一個指令 “attributes disk clear readonly”,
狀況應該會解除。

#windows2012R2 #DISKPART #offline #online #readonly

2017年6月21日 星期三

[軟體] 默默無聞的版本控制系統 PREFORCE

PERFORCE 大概是我使用過最不人性化的版本控制軟體了!
重點是,超過 20 人以上使用要付費!!!
GUI 界面不好用,指令也不如 SVN 或 Git 那麼直覺(真心推薦小烏龜啊!)

PERFORCE 最難搞的地方在於,
從 Server sync 到本地端的檔案全部都唯讀,
要修改檔案前必須要先「p4 edit」改成可讀可寫,
修改完之後再「p4 submit」。

但是對 debug 的人或是專案開發的人來說,這無疑是一件很困擾的事:
因為我今天更改的檔案不見得是我未來要 submit 的檔案。
不過既然公司用這套系統,還是大概簡單介紹一下指令用法

Client workspace

p4 client
編輯 client 資訊
p4 sync
Synchronize the client
相當於 svn up。
最大的差別是: 刪除在 client 端的檔案後下 svn up, 檔案仍會 update 回來。p4 sync 只有在檔案不是 opened 的時候才會 update

options:  -f (強制所有檔案 sync again)

發生 conflict 時可以使用 p4 resolve

Files

p4 add
p4 delete
相當於 svn add, svn delete
把新檔案加到 server 或是從 server 端移除檔案

* 但是!!!! 不管在哪裡新增的檔案權限幾乎都是可讀可寫,p4 add 只能加入唯讀的檔案
p4 diff
Compare a client workspace file to a revision in the depot.

用法:
p4 diff file#567    Compare with revision #567
p4 diff @234       Compare with change list @234
p4 diff -sr | p4 -x - revert
(opened 但沒有被更動的檔案全部 revert)
p4 diff2
diff 只能用來比現在 workspace 的檔案。若要比兩個 revision 或是 change list 間的差異就要用 diff2

用法:
p4 diff2 //depot/rel1/... //depot/rel2/...#4
(rel1資料夾下的檔案與revision #4的rel2資料夾相比)
p4 diff2 file@34 file@1998/12/04
(change list 34 的 file 與 1998/12/04 的 change list 比)
p4 edit
把想要編輯的檔案權限變更為可讀可寫(opened),然後就可以開始更改這些檔案了!

注意: 用 p4 edit 過後若沒有更改檔案,對 PERFOCE 來說這些檔案依舊是 opened。如果沒有要 submit 沒更改的檔案的話要注意。
p4 move
rename 的意思
p4 revert
Discard changes made to open files.
  -a open 但沒有變更才 revert
  -c 只 revert 某個 change list 裡面的檔案
  -n 列出會被 revert 的檔案(但是還沒執行)
  -w 如果使用p4 add,這個指令可以還原 add

Changelists

p4 change
p4 changelist
1. 用 p4 add, p4 delete, p4 edit 過後的檔案會出現在 changelist
2. 檔案會出現在 default 的 changelist 裡面,可以新增多個 changelist
3. p4 change 過一次之後下次再打 p4 change 就找不到這個 changelist 了!所以一定要記得 change list number
4. 可以用 reopen 把改動的檔案從這個 changelist 搬到另一個,但是沒辦法把這個改動的檔案從 changelist 中移除 =..= (只能用 revert 還原)

-d 刪除 changelist,但是 changelist 有 opened file 的話不給刪
-o #changlist 把 changelist 內容印出來(但無法改)
p4 describe
Provides information about changelists and the changelists' files.
p4 opened
List files that are open in pending changelists.
要看自己更動過了哪些檔案用這個比較省事!
p4 submit
最終 Submit!!!
1. p4 edit → p4 submit
2. p4 edit → p4 change 修改 changlist 的描述 → p4 submit -c (change list #)

2017年5月26日 星期五

[筆記] 支援 RDMA 的技術:(一)iWARP

iWARP

iWARP 簡單來說,就是 RFC 定義的 RDMA 技術。
(詳見維基百科中 iWARP 的條目
  • RFC 5040 A Remote Direct Memory Access Protocol Specification
  • RFC 5041 Direct Data Placement over Reliable Transports
  • RFC 5043 Stream Control Transmission Protocol (SCTP) Direct Data Placement (DDP) Adaptation
  • RFC 5044 Marker PDU Aligned Framing for TCP Specification
  • RFC 5042 Direct Data Placement Protocol (DDP) / Remote Direct Memory Access Protocol (RDMAP) Security
  • RFC 6580 IANA Registries for the Remote Direct Data Placement (RDDP) Protocols
  • RFC 6581 Enhanced Remote Direct Memory Access (RDMA)
  • RFC 7306 Remote Direct Memory Access (RDMA) Protocol Extensions


RFC 中定義的 RDMA 具有以下幾種操作動作:
  1. Send
將訊息(Messenge)送至接收方尚未聲明(Advertisment)的緩衝區(buffer)內。與 RDMA Write 不同的地方在於對方的緩衝區有沒有被聲明
  1. Send with Invalidate
將訊息送至接收方尚未聲明的緩衝區,接收方收到訊息後這段緩衝區無法被傳送方存取,直到接收方重新開放存取並聲明這塊緩衝區。
  1. Send with Solicited Events
Solicited Event,詳見 RDMAmojo。簡單的說就有點像是寄雙掛號的意思,接收方收到傳送方的訊息之後,會回傳 Solicited Events。
  1. Send with Solicited Events and Invalidate
照字面上的意思,就是除了發 Invalidate,還會發 Solicited Events。
  1. RDMA Write
接收方會先聲明一塊緩衝區,然後傳送方在訊息上加上 sTag,把訊息傳送到被聲明的緩衝區裡。
  1. RDMA Read
要讀取方會先聲明一塊緩衝區,然後通知對方要讀取,對方會在讀取的內容上加上 sTag 傳送過來這塊緩衝區。
  1. Terminate

這邊提到的對緩衝區做的任何動作,像是聲明緩衝區、對緩衝區貼上 sTag,
這些都不是 RDMA 能辦到的事,而是它底層的 DDP 負責的事。
但光是 RDMA + DDP 仍然不夠,因為並沒有傳輸功能,
所以還要依靠再下層的傳輸協定。

也就是說,如果下層的傳輸協定是可信賴的(reliable ),
那這個 RDMA 就是可信賴的,反之亦然。
所以 RFC 又針對 RDMA + DDP 定義了可信賴連線,
就是上圖的 Stack 了!

2017年5月16日 星期二

[軟體] Linux 上免費的測頻寬工具 - qperf

大部分的人在測頻寬的時候,都會想到 iperf 這個軟體。
(其實他已經很好用了,尤其又有 windows 版本)
不過由於 qperf 沒有 support RDMA,所以來研究一下 qperf。

qperf 跟 iperf 很像,都是需要兩台機器,一台當 server,一台當 client。


當 Server 的機器只要下 "qperf" 即可。
當 Client 的機器的指令則是
qperf <server ip> <test pattern>
例如:qperf 10.0.10.1 tcp_bw

不同的 test pattern 會跑不同的測試。
如果不跑 RDMA 的話,下面四個 test pattern 應該就很夠一般使用了!
  • tcp_bw : TCP bandwidth
  • tcp_lat : TCP latency
  • udp_bw : UDP bandwidth
  • udp_lat : TDP latency
(更多 test pattern,可以下 qperf --help tests)

當然,可以在 <server ip> <test pattern> 中間加上 options。
(不能加在最後!!不能加在最後!!不能加在最後!!)
比較常用的 options 大概是
-ca (or --cpu_affinity)      綁定 CPU
-m (or --msg_size)       設定訊息大小
-t   (or --time)               設定時間(預設兩秒)
-v   (or --verbose)        提供更多輸出資訊

qperf 比 iperf 豐富的地方莫過是拿 -oo (or --loop) 來測 loop 了!
qperf <server ip> -oo Var:Init:Last:Incr <test pattern>
範例: qperf  10.0.10.1  -oo msg_size:1K:1G:*2  tcp_bw
第一個參數 msg_size 是指要拿不同的 message size 來做測試
第二個參數 1K 是指從 1K 大小開始測試
第三個參數 2K 是指測到 1G 大小結束
第四個參數 *2 代表每次增加是以兩倍的方式增加

結果:


另外是,如果不是 RedHat 5以上,或 CentOS 7,qperf 是需要自己下載的。Source code
按照 README 就能很順利的 build 出 qperf 的 binary 檔。
一般 OS 沒有 libibverbs 的情況下,build 出來的 qperf 是沒有 RDMA 功能的。

2017年4月26日 星期三

[軟體] 用 USB 開機、重灌作業系統 :rufus

前鎮子為了重灌電腦(因為工作需求,至少要安裝windows server 2008 or 2012),但是主機又沒有光碟機,所以只好選擇了 USB 開機。

Google 一下可以製作 USB 開機碟的軟體,Windows 大概就是 "Windows7-USB-DVD-tool" 或是 "WinToFlash"。前者雖然是微軟官方釋出的軟體,不過用到現在有個缺點:製作好的開機碟讀取時會說他是 Windows7,即使製作開機碟的 .iso 檔是 windows 2008 或其他(不過安裝時是正常的)。後者使用過一次,沒太大印象。

目前覺得最好用的還是 rufus。優點:
1. 可直接下載可攜版,完全不用安裝。
2. 不像上面兩個軟體只支援某些 windows 版本,這個軟體都支援!
3. 還可以製作 Linux 開機碟
4. 界面簡單,容易上手
目前用 rufus 做的開機碟有:windows server 2008 R2、windows server 2012、ubuntu。用到現在算是滿上手的。



唯一需要注意的是,有些防毒軟體會自動鎖住 "auto run"(autorun.inf) 一類的檔案。如果在製作開機碟時防毒軟體有跳出來顯示訊息,通常那次的開機碟製作後,安裝作業系統時就不會成功。關掉防毒軟體之後這個問題就可以解決了!