LinMarc

@LinMarc

Joined on Apr 16, 2023

  • contributed by < LinMarc1210 > 開發環境 $ gcc --version gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0 $ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 39 bits physical, 48 bits virtual
     Like  Bookmark
  • # 2025q1 Homework5 (assessment)
     Like  Bookmark
  • 解釋 schedsort 的運作原理 程式碼首先讀取輸入,檢查輸入資料數量,並呼叫 schedsort 進行排序,並且動態分配 max_prio 的空間如下: size_t max_prio = (count < 512 ? 512 : (count < 4096 ? 1024 : 2048)); 接著透過迴圈尋找輸入資料的最大和最小值,並定義 val_range = val_max - val_min + 1; ,作為等等 fill_ctx_t 結構的成員值。 整個程式碼並未呼叫排序演算法的 API ,而是透過多個 thread 並行寫入資料至優先級 bucket 中,再將多個 buckets 依順序合併。接下來分配 bucket 的空間,每個 bucket 就像是一個優先權佇列,並且總共有 max_prio 個 bucket,三種陣列的用意如下: buckets:優先級佇列,每個 bucket 就是一種優先級
     Like  Bookmark
  • contributed by < LinMarc1210 > 第三週 - 測驗 1 首先理解 mpi_t 這個結構,他定義成 mpi_t[1],這樣之後變數直接宣告成 mpi_t a 時,a就直接是個指向 mpi_t 的指標了,因為長度為 1 的陣列,直接使用陣列名字時就相當於取得 &mpi_t[0] 。不知道為什麼特別這樣做,但我想是為了減少每次宣告 mpi_t * 還需要額外給指標一個已分配的記憶體。此外這個結構放了無號 32-bit 的整數指標作為資料陣列,並且後續將 mp_bitcnt_t 作為 unsigned 的型別使用。 /* mpi: Multi-Precision Integers */ typedef struct { uint32_t *data; size_t capacity; } mpi_t[1];
     Like  Bookmark
  • contributed by < LinMarc1210 > 開發環境 $ gcc --version gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0 $ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 39 bits physical, 48 bits virtual
     Like  Bookmark
  • contributed by < LinMarc1210 > 開發環境 $ gcc --version gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0 $ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 39 bits physical, 48 bits virtual
     Like  Bookmark
  • contributed by <LinMarc1210> Linux 核心專題: simplefs 專題自己建構一個檔案系統稱為 simplefs,並且連接到 linux VFS (Virtual File System) ,使得我們可以在 kernel 裡面使用 simplefs ,作者首先透過實驗比較 simplefs 與現有的檔案系統,使用 FIO test 工具幾個項目,而作者有提到他原以為 simplefs 的 IOPS(每秒輸入/輸出)應該比更複雜的 ext4 和 btrfs 次數更少,但結果出來效率卻更好,而影片中提到可能是因為 simplefs 還沒有去做額外的處理,比如 journal。 image 因此我就去查了 journal 是什麼,得知 journal 是一種日誌檔案系統,使用一種叫做 circular log 的資料結構去儲存尚未被提交到檔案系統的變更,而資料必須被寫入才能儲存變更,例如刪除檔案其實有好幾個動作,但我們可能在剛釋放完 inode 結構時,檔案系統 crash 掉,導致後續 inode bitmap 和 block bitmap 沒有釋放而不能使用,因此 journal 可以避免這樣的連續動作被切斷,可以即時紀錄。所以較複雜的 ext4, btrfs 可能就會讀寫的比較慢,因為他們具備 journaling 的功能,但優勢則是因不會每次直接對 disk 做讀寫,而是批次將 journal 的內容寫入 disk,因此這些檔案系統的 CPU 使用量, Issued rwts 都比 simplefs 更好(更低)。 接下來作者介紹 simplefs 的設計,其設計因為講求直觀,所以跟我們在作業系統學習的檔案系統相似,並且用寫檔來逐一解釋檔案系統追蹤檔案的過程。
     Like  Bookmark