nullb driver分析0 環境搭建

2021-10-10 13:20:06 字數 1172 閱讀 6179

2.**修改

3. 測試方法

本系列文章主要從null block dev驅動(位於drivers/block/)著手來分析block多佇列機制,本文只是簡要說明相關環境搭建的方法。

核心版本:kernel 4.19

本文選擇將null block驅動編譯進核心

mount -t configfs none /mnt

mkdir -p /mnt/nullb/a

echo 1 > /mnt/nullb/a/memory_backed

這樣可以對其進行格式化

echo 1 > /mnt/nullb/a/power

mkfs.ext2 /dev/nullb0

mkdir /tmp

mount /dev/nullb0 /tmp

測試時可能會遇到錯誤,可能需要做如下修改:

(1)由於作為後備儲存時預設是250g大小,會導致錯誤,修改為1g進行測試

--- a/drivers/block/null_blk.h

+++ b/drivers/block/null_blk.h

@@ -132,7 +132,7 @@ static const struct kernel_param_ops null_queue_mode_param_ops =

+ dev->memory_backed = true;

dev->size = g_gb * 1024;

dev->completion_nsec = g_completion_nsec;

dev->submit_queues = g_submit_queues;

(3) 如果測試多佇列排程器部分,則需要設定如下引數

@@ -82,7 +82,7 @@ enum ;

-static int g_no_sched;

+static int g_no_sched = 0;

module_param_named(no_sched, g_no_sched, int, 0444);

module_parm_desc(no_sched, "no io scheduler");

測試中主要使用了如下工具跟蹤函式的呼叫流程:

ftrace, stack_trace, perf, dd, dump_stack

API函式呼叫過程(3環進0環)

3環進0環需要換 cs eip ss esp 在中斷方式時,cs和eip在中斷門描述符裡面,ss和esp在tss裡面 通過msr暫存器獲得cs esp eip 的值,cpu計算這個值 ss的值等於cs 8 所以cs 0x8 時,ss 0x10 中斷方式路線 通過 kuser shared data ...

lwIP ARP協議分析0

arp 協議分析 總的來說,lwip將鏈路層ethernet的協議分組格式分為ether和etherarp 分開處理。ip分組先進入etharp ip input更新一下arp表項,然後直接進入 netif的input傳遞給上層ip層。arp分組直接進入etharp arp input。不送如ip層...

lwIP ARP協議分析0

arp 協議分析 總的來說,lwip將鏈路層ethernet的協議分組格式分為ether和etherarp 分開處理。ip分組先進入etharp ip input更新一下arp表項,然後直接進入 netif的input傳遞給上層ip層。arp分組直接進入etharp arp input。不送如ip層...