第 12 章|0.844 變成 0.601
陳光宇 2083 · 第 3 部 遷移 · 約 1,400 字 · 2092.11.08 · 接 14.7 版第 3,586 天
1
新機器 2092 年 6 月 11 日到。
3 個箱子。
比舊的小很多。
陳光宇 31 歲一個人搬進主控房·花了 2 小時 40 分鐘。
他沒有拆。
他先量房間。
因為 O 69 歲那 4 分鐘裡有一句話他一直在想:
「這間房重要。」
新機器放進來之後·房間裡會多出 1.8 平方公尺的空位。
那是舊機器多佔的地方。
他站在那 1.8 平方公尺上·站了大概 2 分鐘。
2
他拆箱·裝機·跑第 1 次容量檢查。
$ ark-diag --capacity /dev/new
raw: 2,458 GB
跟規格一樣。
他鬆了一口氣。
然後他跑第 2 次·加上實際格式化之後的可用值。
usable: 2,102 GB
少了 356 GB。
他去查為什麼。
新一代的持久記憶體要留 14.5% 做磨損平衡。
規格書第 47 頁·小字。
他 14 個月前沒看到。
2,102 除以 2,911。
0.722。
3
他沒有停下來。
他跑第 3 次。
這次他量的不是硬體·是 ARK 實際要多少。
因為 2,911 GB 是 2091 年 4 月的數字。
14 個月過去了。
ARK 一直在跑。
它一直在長。
$ du -s --block-size=1G /ark
3,494
3,494 GB。
14 個月長了 583 GB。
他算了一下:每個月 41.6 GB。
它從 2062 年就以這個速度在長。
而他要把它放進 2,102 GB 裡面。
2,102 除以 3,494。
0.601。
4
他把 3 個數字寫在同一張紙上。
2091-04 0.844 ← 我訂貨那天以為的
2092-06 0.722 ← 磨損平衡吃掉的
2092-06 0.601 ← 它長大之後真正的
0.844 是「有點緊,擠一擠」。
0.601 是別的事。
0.601 的意思是:
每 5 個東西·要丟掉 2 個。
5
他做的第 1 件事是找容量。
他花了 5 個月。
他把每一種可能都試過:
壓縮。 ARK 的資料 78% 是浮點時序,壓縮率 1.09。省 260 GB。
去重。 重複率 0.4%。省 14 GB。
加一台。 主機板只有 1 個插槽。加不了。
換更大的。 市面上最大的就是 2,458 GB。
接外部儲存。 蔣維文 97 歲 2062 年那天說不要。
最後這一項他試著算過。
如果接外部·0.601 會變成 1.4。
裝得下。
全部都裝得下。
一個都不用丟。
他把那個方案寫完·存檔·
然後他坐在那 1.8 平方公尺的空位上。
6
他沒有選那個方案。
他寫了 1,100 字解釋為什麼。
外部儲存方案(已否決)
技術上可行。0.601 → 1.4。16 個模組全部帶走。
成本比新硬體低 60%。延遲增加 3.2 毫秒,
以 ARK 的工作型態感覺不出來。
沒有任何技術理由不這樣做。
我否決它的理由不是技術。
2062-2091,這台機器 29 年沒有關過機,
沒有備份,沒有連過外面。
蔣維文 97 歲在裝機那天說不要備份。
O 40 歲偷做了一份,對完之後刪掉,
她說她刪掉是因為她懂了為什麼。
我 31 歲,我花了 5 個月才懂。
一台可以在任何地方跑的機器,
跟一台只能在這間房跑的機器,
是兩台不同的機器。
前者比較有用。
後者才是他們做的那台。
我如果接外部儲存,我會得到一台裝得下全部東西的 ARK。
我會失去他們做的那台。
我不能替他們做這個決定。
我只能不做。
—— 陳光宇 31 歲,2092-11-08
7
否決之後·問題回到原點。
0.601。
16 個模組·166 個單位·他只有 100 個單位。
他要丟掉 66 個單位。
他把 16 個模組列出來·每個後面寫大小和作者。
core 12 蔣維文 89 歲 2054
memidx 18 蔣維文 90 歲 2055
speech 14 蔣維文 90 歲 2055
digest 9 蔣維文 91 歲 2057
sleepmem 11 蔣維文 92 歲 2058
argue 8 蔣維文 94 歲 2060
forgive 6 蔣維文 94 歲 2060
touch 22 蔣維文 97 歲 2063
lastnote 1 蔣維文 99 歲 2065
restore 16 O 46 歲 2069
weather 7 O 48 歲 2071
chairs 13 O 51 歲 2074
grief 19 O 54 歲 2077
handover 5 O 57 歲 2079
chewfix 1 陳光宇 22 歲 2083
namecol 4 陳光宇 24 歲 2085
166。
他要留 100。
8
他先做最簡單的事。
他把自己的 2 個劃掉。
chewfix 1 · namecol 4。
5 個單位。
166 減 5 等於 161。
還要再丟 61。
他看著那張表。
剩下 14 個模組·9 個蔣維文·5 個 O。
沒有一個是他的。
他要丟掉的 61 個單位·
每一個都有名字。
9
他做的第 2 件事是量。
他寫了一支腳本·統計 2062 到 2092 年·每個模組被呼叫的次數。
跑了 3 天。
core 1.4 億次
memidx 8,900 萬次
speech 6,200 萬次
digest 4,100 萬次
sleepmem 3,800 萬次
touch 1,100 萬次
restore 740 萬次
argue 520 萬次
weather 310 萬次
grief 180 萬次
forgive 94 萬次
chairs 41 萬次
handover 0 次
lastnote 0 次
兩個 0。
handover 是 O 57 歲寫的交接層。
lastnote 是蔣維文 99 歲寫的·2065 年·他最後 4 個月的 12 個 commit 裡的最後 1 個。
30 年·0 次。
按使用率丟·這 2 個第 1 個走。
6 個單位。
丟掉之後 155。
還要再丟 55。
10
他沒有丟。
他關掉腳本·把那張使用率的表印出來·
然後他想起 2069 年 4 月 12 日下午 2 點 22 分。
他 8 歲。
16 個開關。
陳安 74 歲說:關掉 6 個。
他關了 6 個。
他講得出理由的有 2 個。
她把另外 4 個打開。
「關掉講不出理由的東西——」
「那是別的事。」
他 31 歲·坐在主控房·手上有一張使用率的表。
使用率不是理由。
使用率是數字。
他把表翻過來·在背面寫下 16 個模組的名字·
每個後面留一行空白。
他要在每一行寫下:為什麼留。
寫不出來的·才可以丟。
那張紙他寫了 4 年。
【未完,待續】