2021年8月3日 星期二

[TCP實驗環境搭建紀錄2] Linux kernel 修改 bypass TSQ 判斷機制

前情提要:

在之前的buffer float 實驗中,了解到Linux kernel 利用 TCP  Small Queue(TSQ) 機制,限制單TCP steam 在本機 TX queue (NIC ring buffer + QDisc queue) 注入的Packet 數量。

因此需要修改kernel code bypass TSQ 檢查機制,製造local tx queue buffer float 的可能性。

Temp load修改方案:

tcp_output.c 

function: tcp_write_xmit:

        if (skb->len > limit &&
            unlikely(tso_fragment(sk, skb, limit, mss_now, gfp)))
            break;

        //if (tcp_small_queue_check(sk, skb, 0))
        //  break;

        /* Argh, we hit an empty skb(), presumably a thread
         * is sleeping in sendmsg()/sk_stream_wait_memory().
         * We do not want to send a pure-ack packet and have
         * a strange looking rtx queue with empty packet(s).
         */
        if (TCP_SKB_CB(skb)->end_seq == TCP_SKB_CB(skb)->seq)
            break;


function: tcp_xmit_retransmit_queue:

        if (sacked & (TCPCB_SACKED_ACKED|TCPCB_SACKED_RETRANS))
            continue;

        //if (tcp_small_queue_check(sk, skb, 1))
        //  break;

        if (tcp_retransmit_skb(sk, skb, segs))
            break;


註解掉以上兩處TSQ check and break 判斷式,bypass TSQ 檢查機制。

預期TCP stack 就能無限制注入packet 到 local tx queue 了。



2021年8月2日 星期一

[TCP實驗環境搭建紀錄1]修改Linux kernal code, 重新編譯與安裝

OS: Ubuntu 21.04

PC: NUC10

參考資料:https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel

 

Step0: 安裝Ubuntu 21.04

 


 

 

 

 


 Step1-1: 設定編譯環境-修改 apt source list





 Step1-2: 設定編譯環境

sudo apt update

sudo apt-get build-dep linux linux-image-$(uname -r)

sudo apt-get install libncurses-dev gawk flex bison openssl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf

 

 Step2: 根據目前內核版本取得linux source code

apt-get source linux-image-unsigned-$(uname -r)


Step3: 根據需要修改source code









Step4: 修改debian.master/changelog 中的 version number

5.11.0-25 -> 5.11.0.26


Step5: build kernel

LANG=C fakeroot debian/rules clean
LANG=C fakeroot debian/rules binary-headers binary-generic binary-perarch 


Step6: install kernel













sudo dpkg -i *.deb

Setp7: Reboot and check kernel version number 是否更新





 

 

2014年12月31日 星期三

DIY 強光LED手電筒 (一)

在一開始,我先表示,我挑選手電筒的哲學就是亮和CP值高,

高亮度LED才是本體,其他部件只是搭載LED的載具。

因此名牌手電筒不會出現在我之後的文章中。

--------------------------------------------------------------------------------------------------------------------------

一般對岸組裝手電筒的結構和下圖相去不遠

從左到右 由下到上 分別為:
1.透鏡
2.反光杯
3.燈頭外殼
4.螢光O環
5.電路倉 (包含LED燈珠 和 驅動電路)
6.桶身外殼
7.開關壓環
8.開關
9.尾部外殼
10.開關膠帽



DIY組裝可自行購入外殼套件(除了LED 和 驅動電路其他零件都有)。

再自行選配LED和對應驅動電路完成。

或是購入組裝完成的手電筒再視需要購買零件更換。

個人推薦第一隻手電買大家公認的好筒,熟悉結構後再進行改裝。

2014年7月7日 星期一

常見鋰電池測試-三星ICR18650-26F(2600mAh)




出廠日期: D=2013;Y=11月。2013年11月


三星SDIEM-ICR18650-26F

額定容量:   2600mAh
額定電壓:   3.7V
充電電壓:   4.2 V

-----------------------------------------------------------------------------------------------------------------------
放電測試結果:


















放電區間:4.2V~3.0V

放電容量:2596mAh

放電能量:9589mWh(9.59Wh)

平均電壓:3.694V






2014年5月1日 星期四

USB充電線挑選(二) : USB線阻測量

為了對一般USB線會造成多少壓降有點概念,測量USB線阻是必須的。

我測量USB線阻採用的方案是把Micro USB接頭端 +-電源線短路,

再從USB-A接頭處送入1A電流,並用電表量測壓差,而得到線路總電阻。












▼做個電路板,加快測量速度

▼USB線接上,線阻就量出來啦(0.2063Ω)


















-----------------------------------------------------------------------------------------------------------------
手邊幾條USB線阻 (不定時更新)

<50CM

小米電源短線:0.1127Ω


18AWG 30CM短線:0.1138Ω









拆線看實際為20awg
>50CM

可捲扁線:0.4614Ω










18AWG 1.2M充電線:0.1976Ω










三星23AWG  1M傳輸線:0.2417Ω


夏普28AWG 傳輸線:0.5596Ω



華為22AWG 1.2M傳輸線:0.2036Ω










原道平板傳輸線:0.4477Ω










光華買的1M扁線:0.7101Ω










三星S2傳輸線 80CM :0.2245Ω










LG G2 20AWG傳輸線 1.2M: 0.1864Ω










小米 1.2M 傳輸線 1.2M: 0.5534Ω

2014年4月26日 星期六

群光5V2A 變壓器開箱


▼5個群光 5V2A變壓器抵達

▼貼紙板
 

-----------------------------------------------------------------------------------------------------------------------
輸出部分,空載電壓都在5.35V左右
差異不大,五顆品質都差不多


至於能不能充小米,也是我這次買變壓器的主要目的,從下表可見到

只要輸出2A時電壓有大於5.15V,小米2A充電就沒問題(但線也不要太爛)



▼注意垂直座標軸為了放大差異從5V~5.5V。

群光5顆在2A輸出時都維持在5.15V以上,代表配上小米短線充電上2A一定沒問題。

另外看出在1.2A輸出時有一個電壓補償,不過也只有一個


發熱量部分:

熱點在標籤貼紙上,比環境高41度(2A輸出1小時)



















至於一起來的18AWG線 22AWG線就是另一個故事了



2014年4月13日 星期日

小米5200行動電源開箱測試

4月8號下單的小米5200今天終於寄到了


▼外殼變成紙盒


▼慢慢拉出來


▼底板基本性能標示



▼大小對比




 淨重: 153.71g

-------------------------------------------------輸出測試-------------------------------------------------------

▼輸出特性:雖然規格是寫1.5A最大輸出,但是實測可達2A以上



▼boost 後可用容量:3319mAh(16.41Wh)
    分別是小米10400的48.51%和47.95%



▼效率部分比小米公布的85%稍高






-------------------------------------------------充電測試--------------------------------------------------------


▲充電特性

▼全速充電溫升


總結:
  1. 輸出高於2A的部分,電壓稍低,可能無法正常使用
  2. 體積很尷尬,因為兩節的容量占了三節的體積,還不如稍微加寬出三顆鋰電的