本文延續前篇效能校正的經驗談,上篇文章探討了關於應用程式本身可以最佳化的部分,包含了應用程式以及框架兩個部分。本篇文章將繼續剩下最佳化步驟的探討。
Speculative Execution Mitigations
接下來探討這個最佳化步驟對於效能有顯著的提升,但是本身卻是一個非常具有爭議性的步驟,因為其涉及到整個系統的安全性問題。
如果大家對前幾年非常著名的安全性漏洞 Spectre/Meltdown 還有印象的話,本次這個最佳化要做的就是關閉這類型安全性漏洞的處理方法。
標題的名稱 Speculative Execution Migitations 主要跟這漏洞的執行概念與 Pipeline 有關,有興趣理解這兩種漏洞的可以自行研究。
作者提到,大部分情況下這類型的防護能力都應該打開,不應該關閉。不過作者認為開關與否應該是一個可以討論的空間,特別是如果已經確認某些特別情境下,關閉防護能力帶來的效能如果更好,其實也是一個可以考慮的方向。
舉例來說,假設今天你運行了基於 Linux 使用者權限控管與 namespaces 等機制來建立安全防護的多使用者系統,那這類型的防護能力就不能關閉,必須要打開來防護確保整體的 Security Boundary 是完整的。 但是如果今天透過 AWS EC2 運行一個單純的 API Server,假設整個機器不會運行任何不被信任的程式碼,同時使用 AWS Nitro Enclaves 來保護任何的機密資訊,那這種情況下是否有機會可以關閉這類型的檢查?
作者根據 AWS 對於安全性的一系列說明認為 AWS 本身針對記憶體的部分有很強烈的保護,包含使用者之間沒有辦法存取 Hyperviosr 或是彼此 instance 的 Memory。
總之針對這個議題,有很多的空間去討論是否要關閉,以下就單純針對關閉防護能力帶來的效能提升。
作者總共關閉針對四種攻擊相關的處理能力,分別是
Spectre V1 + SWAPGS
Spectre V2
Spectre V3/Meltdown
MDS/Zombieload, TSX Anynchronous Abort
與此同時也保留剩下四個,如 iTLB multihit, SRBDS 等
這種設定下,整體的運作效能再次提升了 28% 左右,從 347k req/s 提升到 446k req/s。
註: 任何安全性的問題都不要盲從亂遵循,都一定要評估判斷過
Syscall Auditing/Blocking
大部分的情況下,Linux/Docker 處理關於系統呼叫 Auditing/Blocking 兩方面所帶來的效能影響幾乎微乎其微,不過當系統每秒執行數百萬個系統呼叫時,這些額外的效能負擔則不能忽視,如果仔細觀看前述的火焰圖的話就會發線 audit/seccomp 等數量也不少。
Linux Kernel Audit 子系統提供了一個機制來收集與紀錄任何跟安全性有關的事件,譬如存取敏感的機密檔案或是呼叫系統呼叫。透過這些內容可以幫助使用者去除錯任何不被預期的行為。
Audit 子系統於 Amazon Linux2 的環境下預設是開啟,但是本身並沒有被設定會去紀錄系統呼叫的資訊。
即使 Audit 子系統沒有真的去紀錄系統呼叫的資訊,該子系統還是會對每次的系統呼叫產生一點點的額外處理,所以作者透過 auditctl -a never,task 這個方式來將整體關閉。
註: 根據 Redhat bugzilla issue #1117953, Fedora 預設是關閉這個行為的
Docker/Container 透過一連串 Linux Kernel 的機制來隔離與控管 Container 的執行權限,譬如 namespace, Linux capabilities., cgroups 以及 seccomp。
Seccomp 則是用來限制這些 Container 能夠執行的系統呼叫類型
大部分的容器化應用程式即使沒有開啟 Seccomp 都能夠順利的執行,執行 docker 的時候可以透過 --security-opt seccomp=unconfined 這些參數告訴系統運行 Container 的時候不要套用任何 seccomp 的 profile.
將這兩個機制關閉後,系統帶來的效能提升了 11%,從 446k req/s 提升到 495k req/s。
從火焰圖來看,關閉這兩個設定後,syscall_trace_enter 以及 syscall_slow_exit_work 這兩個系統呼叫也從火焰圖中消失,此外作者發現 Amazon Linux2 預設似乎沒有啟動 Apparmor 的防護,因為不論有沒有關閉效能都沒有特別影響。
Disabling iptables/netfilter
再來的最佳化則是跟網路有關,大名鼎鼎的 netfilter 子系統,其中非常著名的應用 iptables 可以提供如防火牆與 NAT 相關功能。根據前述的火焰圖可以觀察到,netfilter 的進入 function nf_hook_slow 佔據了大概 18% 的時間。
將 iptables 關閉相較於安全性來說比較沒有爭議,反而是功能面會不會有應用程式因為 iptables 關閉而不能使用。預設情況下 docker 會透過 iptables 來執行 SNAT與 DNAT(有-p的話)。
作者認為現在環境大部分都將 Firewall 的功能移到外部 Cloud 來處理,譬如 AWS Security Group 了,所以 Firewall 的需求已經減少,至於 SNAT/DNAT 這類型的處理可以讓容器與節點共享網路來處理,也就是運行的時候給予 “–network=host” 的模式來避免需要 SNAT/DNAT 的情境。
作者透過修改腳本讓開機不會去預設載入相關的 Kernel Module 來達到移除的效果,測試起來整體的效能提升了 22%,從 495k req/s 提升到 603k req/s
註: 這個議題需要想清楚是否真的不需要,否則可能很多應用都會壞掉
作者還特別測試了一下如果使用 iptables 的下一代框架 nftables 的效能,發現 nftables 的效能好非常多。載入 nftables 的kernel module 並且沒有規則的情況下,效能幾乎不被影響(iptables 則相反,沒有規則也是會影響速度)。作者認為採用 nftables 似乎是個更好的選擇,能夠有效能的提升同時也保有能力的處理。
不過 nftables 的支援相較於 iptables 來說還是比較差,不論是從 OS 本身的支援到相關第三方工具的支援都還沒有這麼完善。就作者目前的認知, Debian 10, Fedora 32 以及 RHEL 8 都已經轉換到使用 nftables 做為預設的處理機制,同時使用 iptables-nft 這一個中介層的轉換者,讓所有 user-space 的規則都會偷偷的轉換為底層的 nftables。
Ubuntu 似乎要到 20.04/20.10 的正式版本才有嘗試轉移到的動作,而 Amazon Linux 2 依然使用 iptables 來處理封包。
下篇文章會繼續從剩下的五個最佳化策略繼續介紹
https://talawah.io/blog/extreme-http-performance-tuning-one-point-two-million/
同時也有1部Youtube影片,追蹤數超過877的網紅吸管英語ssuglish,也在其Youtube影片中提到,很多人都覺得用英文講數字是很難的,雖然從一數到十很簡單,可是一旦後面開始多了很多個零就開始愈來愈難懂;今天就來講講究竟該如何用英文講數字,雖然和中文的邏輯有點不一樣,但只要熟悉技巧一樣是一塊小蛋糕~ 0:35 個位數、11-19、十位數 數字低於 100 的數字,幾乎都是「十位數 + 個位數」,所...
million轉換 在 Facebook 的精選貼文
#葉郎每日讀報 #娛樂要聞揀三條
1.上週噤界和六人行分別統治兩個世界
2.Twitch警告侵權直播主可能被三振
3.貓影片日進斗金而音樂人卻被迫乞討
____________________________________
▼ 1-1.
Box Office: ‘A Quiet Place Part II’ Smashes Pandemic Record With $48 Million Debut(https://flip.it/JZ1Jm-)
1-2.
‘Friends: The Reunion’ Was Almost as Big as ‘Wonder Woman 1984’ on HBO Max(https://flip.it/9oF-94)
│
延後上映一年的《A Quiet Place Part II 噤界2》終於在上週末上陣,並以5800萬美元的北美票房成為疫情發生以來的北美週末票房最高紀錄。這個數字高過前一集的5000萬,也成為極少數越賣越好的恐怖電影續集。《噤界2》將在45天後上架 Paramount+。顯然獲益於疫情緩解,迫不及待的美國觀眾用行動證明了他們絕對不想再等45天。另一方面 Disney 的《Cruella 時尚惡女:庫伊拉》似乎因為同步上架 DIsney+ 的關係,上週末上映後在北美僅賣得2130萬美元,加計全球票房則有3740萬。疫情之後的產業結構已經完全改組,但《噤界2》算是替電影院出口氣賞了串流一巴掌。另一方面在串流世界裡頭,上週最熱門的事件則是HBO Max 的《Friends: The Reunion 六人行:當我們又在一起》。因為串流世界總是欠缺官方數據,只能仰賴第三方的檢測:根據 TVision 的調查數據,5月27日上架當天約有29%的美國受調查家庭觀看了該節目,只略低於先前《Wonder Woman 1984 神力女超人1984》的32%(需注意的是後者是造價2億美元的超級怪物)。
│
│
▼2. Twitch warns streamers another wave of copyright strikes is coming(https://flip.it/EwF35s)
│
疫情之前疫遊戲直播平台上的直播主原本就會一邊打 game 一邊播音樂,疫情之後則冒出更多音樂創作者透過該平台演出。沒分到錢的唱片公司因而從去年就開始密集對付 Twitch 和平台上的直播主,依據 DMCA 美國千禧著作權法祭出一波又一波的侵權通知。Twitch 上週以 email 的方式對他們的用戶提出警告,說該平台又收到上千筆來自版權方的侵權通知,其中絕大多數是針對邊打 game 邊播音樂的玩家。Twitch 因此警告玩家累積三次警告之後他們將被迫依規定封鎖其帳號。因為 Twitch 欠缺像 YouTube 那樣自動辨識音軌版權歸屬的機制,也沒有和唱片公司分潤的機制,唯一的選項就是平台方強制下架或是用戶自主下架。Twitch 寄出這波信件顯然希望催促用戶主動一點,讓他們少點麻煩。Twitch 去年底已開始提供授權音軌工具 Soundtrack,讓不想默默直播又欠缺授權音樂的直播主可以合法套用。
│
│
▼ 3. In big tech’s dystopia, cat videos earn millions while real artists beg for tips(https://flip.it/otlDyA)
│
本來以為又是一篇抱怨 Spotify 分潤不公讓音樂人餓肚子的文章,但作者提出了滿有意思的觀點。他說 Spotify 被抱怨讓音樂人餓肚子之後離奇地推出了「打賞」給音樂人的捐款按鈕。實際上傳統紙媒瓦解之後,也有許多記者和寫作者轉換到網路上尋求捐款支持他們的寫作(這篇衛報報導的文末其實也有類似的捐款公告)。但數位經濟體系的邏輯和傳統類比經濟體系完全不一樣。傳統經濟體系不論是出版、唱片或是電影公司都是仰賴幾個賺錢的作者賺到的錢來繼續支持其他現在還沒賺錢的作者。數位世界中沒有這把大傘庇護,每個人都必須使出吃奶力氣搏眼球,因此從來沒有深入、公正、精確報導的餘地,拚了命求爭議、求被討論、求擴散力道。另一方面有些社交平台(如正在與 TikTok 競爭的 Snapchat)不惜支付數百萬美元買網紅。作者想像了日前參與連署呼籲政府修法的 Paul McCartney 如果一開始就生在數位時代,現在應該仍忙碌於每天上傳音檔以便求取「打賞」帳戶能多幾塊錢入帳。在此同時,那些迷因短片中的貓貓狗狗才是靠著「才華」日進斗金的不世奇才。
million轉換 在 浩爾譯世界 Facebook 的最讚貼文
跟你們分享很開心的一段文字(還有奇妙故事)
來自大大啟發我教學熱忱的梅姨!
謝謝 Leeds Mayi 🐜
以下是May老師的分享
-
今天我想跟大家推薦一個非常厲害的課程,我親自上過課,實際臨場體驗後,害我這個英文老師都很想牛刀小試來當個一日口譯員看看的「浩爾口譯實戰班」。
口譯,一直也是我曾經想過要擔任的工作。人生最接近的時刻是,曾經假扮一間公司的會計袐書,前一天還去沙盤演練了一個下午。但當天歐洲客人一到辦公室,坐下來之後,居然打斷準備要做簡報的我。看著我,問我一個天大的難題,「台灣的稅法跟日本的稅法哪裏不一樣?」「我們才剛從日本過來」。
我驚嚇到說不出話。立刻看著「真正的」袐書,向她求救。接下來所有的工作就突然變成現場口譯,兩邊人馬說什麼,我就當場翻成另一個語言。那半小時我的背都濕了啊。。。
總之,身為一個被教英文耽誤的口譯界明日之星(這個小幽默我是跟美國前副總統Al Gore學的。他曾在 An Inconvenient Truth紀錄片中介紹自己說 ”I used to be the next president of the United States”),我還是偶爾會偷看口譯員到底在幹嘛。
昨天晚上的口譯課開場上的是「數字口譯暖身」,我的老天,看到講義不禁要大叫,因為我在雅思課第一堂課,也就是聽力課,練習個十百千萬十萬百萬千萬億時,也是用世界人口來教的!不過浩爾教的更活,是這些句子的英翻中練習(想像你只能用聽的,不是像現在是用「閱讀」的):
*There are currently 327 million people in the U.S. That’s about 4% of the 7.7 billion people on earth.
*There are 40 million Americans below the poverty line, and if you know the U.S. population, you know that’s over 1 in 10 people.
*If you hear that 0.6% of Americans identify as transgender, then you know that’s around 2 million people.
聽懂大數字是非常好的專注力練習的開始,不只雅思學生需要聽懂,一般人若聽懂更是對自己利多。這十幾年我不只一次在看Discovery或NGC頻道時看到中文字幕上出現重大的英翻中數字錯誤(譬如舉例英文沒有「億」這個字,若要講億很多人會以為是 a billion,完全不是啊,英文一億是 100 million啊!),若真的聽信了錯誤的中文字幕還真的會有後果的啊。
好,上完上面的數字後,課程再接到第二小時的逐步口譯(口譯倫理和處理方式),以及第三小時的短逐步影片跟文稿轉換練習。最後的回家功課是聽金馬口譯原文,超級靈活,超有趣。
我想很多朋友或許跟我一樣,英文程度不錯,對口譯很好奇,但又不至於想不開去花好幾年讀口譯研究所(只有英國口譯所是一年),那麼這門課就非常適合入門,讓你學會基本的口譯知識,誰知道哪天你公司突然跑來一個外國人,平時已經做好準備的你突然不小心就可以跟龐德或傑森伯恩一樣(他們為何常常都會突然會講德語或俄語啊,為什麼為什麼到底為什麼??),你突然就可以翻譯公事,得到老闆的驚艶後升職的?(不要以為不可能啊,這個世界是高手雲集的啊!真實世界中我就曾經在Newark要前往 New York的一列火車上面用中文跟當時的美國男友講美國人的壞話,結果旁邊一個洋人大叔回頭用標準北京腔跟我們說,「不要以為大家都聽不懂中文啊!」Oops!好糗啊!)。
這堂課同時也可以讓你檢視自己的英文程度夠不夠好,哪些地方是你的弱點,讓你自己了解還需要補強什麼地方。文法程度太弱的朋友,就要先來我們里茲螞蟻補個四大天王May、Kenneth、Sabi跟Chloe輪番上場的文法課程(壓力很大耶我們,口譯員文法行前訓練的重責)。單字太少,就來補個單字課程,發音太難讓人理解的朋友,就先來補個發音(不過梅姨我是英式發音就是了,對啦,I can’t是發「埃~抗~」的那種。目前美腔發音課從缺,我會督促 #台灣浩 快點開設美式發音訓練班的)。
下週一下午(5月31號)浩爾的第十一期口譯課又要開新班了。每週一次,幫你算好了,只要八次,也就是差不多台灣解封的那天,你的課程已經結束了,你就可以展翅高飛了(如果真的可以飛的話,唉,God bless Taiwan)!
課程資訊:https://lihi.tv/sXzYI
-
謝謝May,妳的故事讓我想到
有次客戶請我假扮他親戚,免得對方感覺不被信任。但我跟客戶實在長得有夠不像而且有夠不熟,更詭異~!更多怪奇故事,課堂上討論
學英式發音,找 Leeds Mayi
million轉換 在 吸管英語ssuglish Youtube 的最佳解答
很多人都覺得用英文講數字是很難的,雖然從一數到十很簡單,可是一旦後面開始多了很多個零就開始愈來愈難懂;今天就來講講究竟該如何用英文講數字,雖然和中文的邏輯有點不一樣,但只要熟悉技巧一樣是一塊小蛋糕~
0:35 個位數、11-19、十位數
數字低於 100 的數字,幾乎都是「十位數 + 個位數」,所以只要熟悉個位數、11-19、十位數的英文單字,要講 1-99 是很簡單的喔~
1:57 百、千、萬、十萬
【英文沒有「萬」這個單位,萬 = 10個千】
數字大於 100 的時候,就是以千為單位、每三個數字分為一組做拆解。但不要怕,用英文講數字可以很彈性(3:22),就算講六位數的複雜數字其實也不難(3:58)喔!!
4:51 百萬、千萬、億
【百萬 million;英文沒有「億」這個單位,億 = 100個百萬】
這邊開始很多個零啦!! 但還是一樣用 千(000) 為一組做拆分基準,再多位數也不怕,三個一組拆開來,就算是九位數(5:34)也不用怕~
6:29 十億、百億、千億、兆
【英文的「十億」是一個單位 billion】
因為單位的不同,所以英文講到十億的時候,不要想成「幾十個億」要想成「幾個十億」,例如百億就是十個十億。
兆有自己的單位叫 trillion,比兆再更多、不知從何數起的龐大數字統一會叫做 zillion。
7:47 千的其他稱呼
【英文的「千」是很重要的單位】
千在英文裡面是重要的、也是常常出現的,除了 thousand 之外,也可以用 k 代表;日常生活中講金額的時候會用 grand,1000 = 1 grand。
其實就只有一個規則啦:英文的數字單位沒有萬,都是用千(000)作拆分單位
所以看到任何數字就先用逗號,三個三個為一組區分開來,剩下就是數字的直翻而已啦!! 可以隨便在紙上寫一串數字,然後練習用英文唸出來,幫助你熟悉這個轉換過程喔😎😎😎
※※※
影片中出現的單字會不定期新增在IG/粉絲頁
看到生字沒關係,記得常常複習,多看幾次就變熟了!
💎IG:https://www.instagram.com/ssuglish
💥Facebook:https://www.facebook.com/ssuglish
【蘇式口訣】👍🏻Like按讚 ⚡️Subscribe訂閱 🤸🏻♀️Share 分享 🚀Follow追蹤
※※※
Ssu 蘇蘇
15歲前往袋鼠國開始流浪🦘
語言課程 + 高中在布里斯本、大學在墨爾本讀工業設計
期間去了蘇格蘭交換、當背包客走過許多地方
2016年初回到台北定居,從此以爆肝設計師 + 英語家教雙重身份在江湖打滾
💣https://www.ssudio.com
2020下定決心在線上分享自己對教英語的熱情
提倡學英語就該開開心心🍻
#數字英文 #英文實用單字 #英文實用句型
#跟著蘇蘇學英語 #吸管英語 #按讚訂閱分享追蹤
#學英文 #線上學英文 #生活英文 #日常英文 #英文單字 #職場英文