本文延續前篇效能校正的經驗談,上篇文章探討了關於應用程式本身可以最佳化的部分,包含了應用程式以及框架兩個部分。本篇文章將繼續剩下最佳化步驟的探討。
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/
同時也有3部Youtube影片,追蹤數超過8萬的網紅かじまっくチャンネル,也在其Youtube影片中提到,#Chromebook #Lenovo #S330 ボクが買ったのは32GBのHDモデルですけど、 →Lenovo Chromebook S330 32GB HD:https://amzn.to/2xWZIBk もしも購入されるなら断然FHDモデルをおすすめします(^^;) →Lenovo Chro...
「linux pipeline」的推薦目錄:
- 關於linux pipeline 在 矽谷牛的耕田筆記 Facebook 的精選貼文
- 關於linux pipeline 在 BorntoDev Facebook 的精選貼文
- 關於linux pipeline 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
- 關於linux pipeline 在 かじまっくチャンネル Youtube 的最佳解答
- 關於linux pipeline 在 かじまっくチャンネル Youtube 的最佳貼文
- 關於linux pipeline 在 かじまっくチャンネル Youtube 的最佳解答
- 關於linux pipeline 在 Conditional pipeline - Unix & Linux Stack Exchange 的評價
- 關於linux pipeline 在 How to run vstest using Linux agent in azure Release pipeline? 的評價
- 關於linux pipeline 在 Build-OMS-Agent-for-Linux/pipeline.user.linux.yml at master 的評價
- 關於linux pipeline 在 Setting up CI pipeline with Jenkins, GitHub & Docker on ... 的評價
- 關於linux pipeline 在 使用Linux tee 同時螢幕標準輸出和輸出到檔案 - ShengYu Talk 的評價
linux pipeline 在 BorntoDev Facebook 的精選貼文
⌛ ปฏิเสธไม่ได้เลยว่าอาชีพ DevOps ก็กำลังมาแรงมากในยุคนี้เช่นกัน อีกทั้งยังเป็นอาชีพที่มีค่าตัวสูงมากๆ ทำให้ใครหลายๆ คนจึงอยากทำอาชีพนี้
.
💡 DevOps พูดกันง่ายๆ คืออาชีพที่จะช่วยเชื่อมกระบวนการพัฒนาโปรแกรม ไปจนถึงขั้น Deploy รวมถึงการติดตามสถานะการทำงานของโปรแกรม และนำมาปรับปรุงพัฒนาให้มีประสิทธิภาพยิ่งขึ้น
.
👉 สิ่งสำคัญที่ต้องเรียนรู้หากอยากจะทำอาชีพนี้มีอะไรบ้าง? วันนี้แอดสรุปคร่าวๆ มาให้แล้วจ้า
.
✨ 1) ต้องมีแนวคิดในการพัฒนาซอฟต์แวร์
ซึ่ง DevOps อาจจะไม่ต้องเขียนโปรแกรมโดยตรง แต่ต้องมีความรู้ที่ครอบคลุมและทำงานร่วมกับทีม Developer เพื่อพัฒนาปรับปรุงโปรแกรมให้เป็นไปตาม Flow มากที่สุด
.
✨ 2) ต้องมีความรู้พื้นฐาน Linux
การทำงานจะต้องจัดเตรียมโครงสร้างต่างๆ ซึ่งส่วนใหญ่จะทำบนเซิร์ฟเวอร์ และเซิร์ฟเวอร์ส่วนใหญ่ก็จะใช้ OS เป็น Linux ดังนั้นจึงต้องมีความรู้ด้านนี้มาบ้าง เช่น คำสั่ง Command Line พื้นฐาน, SSH Key เป็นต้น
.
✨ 3) Networking & Security
เช่นการ Configure Firewalls, HTTP/HTTPS, โครงสร้าง IP addresses และ DNS เป็นต้น
.
✨ 4) Docker
DevOps ส่วนใหญ่จะใช้งาน Docker กันเป็นหลัก หากใครยังไม่มีพื้นฐานสามารถเข้าไปเรียนได้ฟรีได้ที่ลิงค์นี้เลย >> https://www.youtube.com/watch?v=3c-iBn73dDE
.
✨ 5) CI/CD
เป็นกระบวนการ Monitor การพัฒนาแอปพลิเคชันแบบอัตโนมัติ ตั้งแต่การนำโค้ดมา Merge กัน ไปจนถึงการทดสอบเพื่อ Deploy ขึ้น Production ซึ่งเราควรเรียนรู้เครื่องมือต่างๆ ที่จะทำ CI/CD อย่างเช่น CI/CD pipeline, การ Set Up CI/CD, การใช้งาน Docker Image เป็นต้น
.
✨ 6) ผู้ให้บริการ Cloud
ซึ่งในหลายบริษัทใช้บริการโครงสร้าง Cloud สำเร็จรูป โดยที่ไม่ต้องออกแบบ IaaS เอง ซึ่งเราควรเรียนรู้ และใช้เครื่องมือต่างๆ ของระบบ Cloud นั้นๆ ไว้บ้าง ซึ่งที่ฮิตกันตอนนี้ก็มี AWS, Azure, และ Google Cloud เป็นต้น
✨ 7) Kubernetes
เป็นที่นิยมอย่างมากในการใช้จัดการ Containers บนเซิร์ฟเวอร์ต่างๆ และเราก็ควรเรียนรู้ว่ามันทำงานยังไง มีคำสั่งอะไรบ้าง หากใครสนใจอยากเรียนพื้นฐานการใช้งาน Kubernetes แบบฟรีๆ คลิกลิงค์ได้เลยจ้า >> https://www.youtube.com/watch?v=X48VuDVv0do
.
✨8) ภาษา Script
การจัดการแอปพลิเคชันแบบอัตโนมัติก็ต้องมีการเขียน Script เพื่อให้มันทำงานตาม Flow จึงจำเป็นที่จะต้องเขียนภาษา Script พื้นฐานให้เป็นด้วย เช่น Python, Ruby, NodeJS และ Go
.
✨ 9) การใช้งาน Git
จำเป็นต้องรู้โครงสร้าง และคำสั่งพื้นฐานในการใช้งาน Git เพื่อช่วยจัดการและติดตามการเปลี่ยนแปลงของโค้ด และการอัปเดตเวอร์ชันต่างๆ ก่อน Deploy ขึ้น Production
.
✨ 10) พื้นฐาน Infrastructure
ต้องรู้จักเครื่องมือต่างๆ ที่ใช้ในการจัดการ Infrastructure อย่างมีประสิทธิภาพ เช่น Ansible, Puppet, และ Chef เป็นต้น
.
หากใครมีประเด็นเพิ่มเติม หรือพี่ๆ คนไหนที่กำลังทำอาชีพนี้ มีสิ่งที่อยากจะแชร์ให้กับเพื่อนๆ หรือน้องๆ ที่สนใจ สามารถคอมเมนต์ไว้ใต้โพสนี้เลยนะคะ 😍
.
❤️ หวังว่าข้อมูลนี้จะเป็นประโยชน์กับเพื่อนๆ น้า
.
borntoDev - 🦖 สร้างการเรียนรู้ที่ดีสำหรับสายไอทีในทุกวัน
linux pipeline 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
隨者資安意識的提升, Container Image 的安全性檢查變得愈來愈重要,最基本的想法就是針對 Image 本身去檢查是否有任何已知的 CVE 與 vulnerabilities,透過這類型的機制來確保我們要部署到生產環境的 Container Image 是足夠安全的。
目前至少有三種方法可以來達成這目標,第一種是直接使用相關的 CLI 工具掃描,第二種是將工具整合到 Container Registry 中,根據情況自動掃描,第三種則是將工具整合到 CI/CD pipeline 過程中,只有符合標準的 Container Image 才有資格被推到團隊所使用的 Container Image。
本文作者透過 Trivy 以及 GitlabCI 等工具來示範如何於 CI/CD pipeline 中完成 image 的安全性檢查(也就是方式三)。
# 重點整理
1. Trivy 掃出來的安全性有四種,分別是 Low, Medium, High 以及 Critical
2. Trivy 本身不定義什麼樣的結果叫做安全或不安全,完全是根據使用者自己決定。作者認為這個標準取決於團隊對於資安的重視性。範例中,作者定義只要有任何一個 Critical 等級的安全性漏洞,就將該 Image 視為不安全
3. 透過 Gitlab CI 的流程,來建置 Container Image,並且透過 Trivy 掃描,如果不符合安全定義就透過 exit-code 來結束該 stage,同時也會將 Trivy 的掃描結果給一併上傳。
如果對於(2)透過 container registry 來掃描的,可以參考我今年針對 ITHOME 鐵人賽所撰寫的文章: https://www.hwchiu.com/ithome/2020/registry/day21.html
原文:
https://medium.com/alterway/adding-image-security-scanning-to-a-ci-cd-pipeline-2faff072d
linux pipeline 在 かじまっくチャンネル Youtube 的最佳解答
#Chromebook #Lenovo #S330
ボクが買ったのは32GBのHDモデルですけど、
→Lenovo Chromebook S330 32GB HD:https://amzn.to/2xWZIBk
もしも購入されるなら断然FHDモデルをおすすめします(^^;)
→Lenovo Chromebook S330 64GB FHD:https://amzn.to/32CIffR
あと、一緒に買ったエレコムインナーバッグもちょっと大きかったですww
→ZEROSHOCK スリム 14/15/15.4/15.6 :https://amzn.to/2xSVieZ
購入時のリサーチはほんと大切ですね!!!
Lenovo Chromebook S330 製品仕様書
https://www.lenovo.com/jp/ja/static/catalog/nb-2019-s330_rt_0625
【この動画の情報はアップロード日時点のものです。情報の劣化や急遽内容変更、また、情報に誤りがある場合もございますのでご注意下さい】
Amazonプライム会員はこちら↓配送特典、プライム・ビデオ等 お得感満載!
https://www.amazon.co.jp/gp/prime/pipeline/landing/ref=as_li_ss_tl?ie=UTF8&ref=pd_prim_g_prim_prime_0086&linkCode=ll2&tag=kajimack-22&linkId=9898dcf14595f792fb783150f03d18e8
Amazon Mastercardクラシックに新規ご入会で6,000ポイントがもらえる!!!
https://www.amazon.co.jp/MasterCard%E6%96%B0%E8%A6%8F%E5%85%A5%E4%BC%9A%E3%82%AF%E3%83%AC%E3%82%B8%E3%83%83%E3%83%88%E3%82%AB%E3%83%BC%E3%83%89/b/ref=as_li_ss_tl?ie=UTF8&node=3497243051&linkCode=ll2&tag=kajimack-22&linkId=3a4996e2dded28552e99aaa4e42616ff&language=ja_JP
かじまっくのTwitter:https://twitter.com/kajimack_ch
かじまっくのInstagram:https://www.instagram.com/kajimack.ch/
かじまっくチャンネル中の人(ブログお休み中):https://kajimack.blogspot.jp/
使用音源:YouTubeオーディオライブラリ
※上記Amazonリンクはアソシエイトリンクを使用しています。
使用アプリ
LINE camera
https://itunes.apple.com/jp/app/aillis-jiuline-camera/id516561342?mt=8
iMovie(ios iPad)
https://itunes.apple.com/jp/app/imovie/id377298193?mt=8
モザイク ぼかし & モザイク加工アプリ
https://itunes.apple.com/jp/app/モザイク-ぼかし-モザイク加工アプリ/id964220645?mt=8
MovStash
https://itunes.apple.com/us/app/movstash/id1058281885?mt=8
Luma Fusion
https://itunes.apple.com/jp/app/lumafusion/id1062022008?mt=8
linux pipeline 在 かじまっくチャンネル Youtube 的最佳貼文
#PaperlikeHD #Dasung
提供 SKT株式会社:https://sktgroup.co.jp/
紙のような見心地のセカンドモニター「Paperlike シリーズ」の新モデルです!
2019年2月15日販売開始されたばかりの新製品、新旧比較もしてみました(^^ゞ
Paperlike Pro Touch/Einkセカンドモニター / 13.3インチ / HDMI接続
https://amzn.to/2Iig3bV
Papelike HD(Paperlike 3) 13.3インチE Inkセカンドモニター
https://amzn.to/2Ik8wtj
今回使用したディスプレイポート変換ケーブル
BENFEI DisplayPort(ディスプレイポート) - HDMI 変換ケーブル オス・オス 【相性保証付き】
https://amzn.to/2DO8a8I
過去動画はこちら:https://youtu.be/LwWvabVzx0k
【この動画の情報はアップロード日時点のものです。情報の劣化や急遽内容変更、また、情報に誤りがある場合もございますのでご注意下さい】
Amazonプライム会員はこちら↓配送特典、プライム・ビデオ等 お得感満載!
https://www.amazon.co.jp/gp/prime/pipeline/landing/ref=as_li_ss_tl?ie=UTF8&ref=pd_prim_g_prim_prime_0086&linkCode=ll2&tag=kajimack-22&linkId=9898dcf14595f792fb783150f03d18e8
Amazon Mastercardクラシックに新規ご入会で6,000ポイントがもらえる!!!
https://www.amazon.co.jp/MasterCard%E6%96%B0%E8%A6%8F%E5%85%A5%E4%BC%9A%E3%82%AF%E3%83%AC%E3%82%B8%E3%83%83%E3%83%88%E3%82%AB%E3%83%BC%E3%83%89/b/ref=as_li_ss_tl?ie=UTF8&node=3497243051&linkCode=ll2&tag=kajimack-22&linkId=3a4996e2dded28552e99aaa4e42616ff&language=ja_JP
かじまっくのTwitter:https://twitter.com/kajimack_ch
かじまっくのInstagram:https://www.instagram.com/kajimack.ch/
かじまっくチャンネル中の人(ブログお休み中):https://kajimack.blogspot.jp/
使用音源:YouTubeオーディオライブラリ
※上記Amazonリンクはアソシエイトリンクを使用しています。
使用アプリ
LINE camera
https://itunes.apple.com/jp/app/aillis-jiuline-camera/id516561342?mt=8
iMovie(ios iPad)
https://itunes.apple.com/jp/app/imovie/id377298193?mt=8
iOSのためのGarageBand
https://www.apple.com/jp/ios/garageband/
iVOCALOID-VY1
https://itunes.apple.com/jp/app/ivocaloid-vy1/id396081265
モザイク ぼかし & モザイク加工アプリ
https://itunes.apple.com/jp/app/モザイク-ぼかし-モザイク加工アプリ/id964220645?mt=8
MovStash
https://itunes.apple.com/us/app/movstash/id1058281885?mt=8
linux pipeline 在 かじまっくチャンネル Youtube 的最佳解答
発売直前、Windows、Mac、Linux等対応のE Inkセカンドモニター!
Paperlike HDのご紹介です!【SKTNETSHOP 商品提供動画】
Paperlike HD(Paperlike 3) 13.3インチE Inkセカンドモニター
https://www.amazon.co.jp/dp/B07G7DY9XL/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=kajimack-22&linkId=bdbecedb799c020f081e3ab407c24281&language=ja_JP
SKL HP:https://www.sktnetshop.com/
※本製品は2018年8月17日発売です
Dasung メーカーHP:http://www.dasung.com/
Amazonプライム会員はこちら↓配送特典、プライム・ビデオ等 お得感満載!
https://www.amazon.co.jp/gp/prime/pipeline/landing/ref=as_li_ss_tl?ie=UTF8&ref=pd_prim_g_prim_prime_0086&linkCode=ll2&tag=kajimack-22&linkId=9898dcf14595f792fb783150f03d18e8
Amazon Mastercardクラシックに新規ご入会で5,000ポイントがもらえる!!!
https://www.amazon.co.jp/gp/cobrandcard/marketing.html/ref=as_li_ss_tl?ie=UTF8&place=camp&pr=concls&inc=cls20k&linkCode=ll2&tag=kajimack-22&linkId=045c96a7b6e522f68110be99dde353e4
【この動画の情報はアップロード日時点のものです。情報の劣化や急遽内容変更、また、情報に誤りがある場合もございますのでご注意下さい】
かじまっくのTwitter:https://twitter.com/kajimack_ch
かじまっくのInstagram:https://www.instagram.com/kajimack.ch/
かじまっくチャンネル中の人(ブログお休み中):https://kajimack.blogspot.jp/
使用音源:YouTubeオーディオライブラリ
※上記Amazonリンクはアソシエイトリンクを使用しています。
使用アプリ
LINE camera
https://itunes.apple.com/jp/app/aillis-jiuline-camera/id516561342?mt=8
iMovie(ios iPad)
https://itunes.apple.com/jp/app/imovie/id377298193?mt=8
iOSのためのGarageBand
https://www.apple.com/jp/ios/garageband/
iVOCALOID-VY1
https://itunes.apple.com/jp/app/ivocaloid-vy1/id396081265
モザイク ぼかし & モザイク加工アプリ
https://itunes.apple.com/jp/app/モザイク-ぼかし-モザイク加工アプリ/id964220645?mt=8
MovStash
https://itunes.apple.com/us/app/movstash/id1058281885?mt=8
linux pipeline 在 How to run vstest using Linux agent in azure Release pipeline? 的推薦與評價
... <看更多>
相關內容
linux pipeline 在 Build-OMS-Agent-for-Linux/pipeline.user.linux.yml at master 的推薦與評價
Build projects required for omsagent. Contribute to microsoft/Build-OMS-Agent-for-Linux development by creating an account on GitHub. ... <看更多>
linux pipeline 在 Conditional pipeline - Unix & Linux Stack Exchange 的推薦與評價
Just the usual && and || operators: cmd1 < input.txt | cmd2 | ( [ -n "$DEFINED" ] && cmd3 || cat ) | cmd4 | cmd5 | cmd6 | (...) | cmdN > result.txt. ... <看更多>