本文延續前篇效能校正的經驗談,上篇文章探討了關於Locality與中斷中可以最佳化的部分,。本篇文章將繼續剩下最佳化步驟的探討。
The Case of the Nosy Neighbor
從前述最後的火焰圖中,作者觀察到幾個跟網路有關的 kernel call,譬如 dev_queue_xmit_nit 以及 __netif_receive_skb_core 等有可能有成長的空間,於是輾轉前往這邊去研究。
作者觀察到 packet_rev 這個函式有不少的比例,而該函式的意思是有人嘗試透過使用 AF_PACKET 等方式開啟了 RAW socket 來處理封包。透過 ss 這個指令,作者觀察到系統中有其他的應用程式透過 AF_PACKET/SOCKET_RAW 也在處理封包,最後輾轉發現原來是系統上的 dhclient。
DHCP Client 必須要在系統有 IP 以前就有收送封包的能力,所以使用 AF_PACKET 也滿合理的。作者思考是否有辦法可以讓 DHCP Client 拿到 IP 之後就關閉 AF_PACKET,改使用純 UDP 的方式來進行後續的 DHCP Renewal 功能,可惜這個方向沒有辦法達成。
根據 AWS 的官方文件,當一個 IP 被分配到一個機器後,這個 IP 會跟該機器同生死,因此這種情況下 其實不需要透過 DHCP Renewal 來反覆取得 IP,只要取得一次 IP 即可。
作者變修改相關腳本,當 DHCP 取得 IP 後關閉 dhclient,此外還必須要記得去修改網卡層級關於該 IP 的記憶,預設期間是一小時,作者將其修改為永遠。
透過這樣簡單的設定,整體的效能又再度提升了 6%,從 1.06M req/s 提升到 1.12M req/s
The Battle Against the Spin Lock
作者陳述自己花了非常多時間與 Spin Lock(作者心魔的大白鯨) 奮戰,幾乎是茶不思飯不想的滿腦都在思考如何加速,然後再經歷過反反覆覆的失敗後,作者最後決定還是要寫出一些關於 Spin Lock 的嘗試與研究心得,算是一個很精彩的踩雷心得。
這部分的篇幅很長,而且內容也滿深的,最後的解決方式也只有提升 2%左右的效能,所以對這部分有興趣的讀者再自行閱讀囉
This Goes to Twelve
終於來到最後的最佳化步驟了,這個步驟中的範疇都只能勉強壓榨出些許的效能,包含了關閉 GRO, TCP壅塞控制以及靜態中斷處理。
(Generic Receive Offload)GRO 是一個網路相關的功能,目的是用來將 Kernel 層級的封包給聚合起來變成一個大封包,而 Kernel 收到這個封包後會把該大封包重新組合變成本來的小封包,對於使用者的應用程式來說不會有任何感覺,但是對於整體的封包傳輸來說能夠節省花費的並提升效能。大部分情況下這個功能都是開啟的,Amazon Linux 2 預設也是打開這個選項。
然而針對作者的測試情境,由於所有的封包基本上都是同一條連線且資料量也不大,因此 GRO 雖然可以帶來聚合的效果,但是也會拖延封包進入到 Linux Kernel Network Stack 的時間點,因此開啟 GRO 帶來的好處沒有很大。
TCP 壅塞控制有不同的演算法,Amazon Linux2 內建兩種演算法 Cubic 以及 Reno,除此這兩個之外常見的還有 Google 多年前貢獻的 BBR。根據作者測試,其實驗環境中有比較好效能的則是 Reno
註: 不同算法針對不同應用場景,所以要切換演算法前要先釐清自己的應用情境以及用哪種演算法比較合適。
全部零零總總的修改後提升了 4%,整體的效能服務來到了 1.2M reqs/s
這篇文章真的很長,有些最佳化的方式是針對該應用場景而特別去使用的,這也意味者並非所有的修正方式都可以套用到各位的應用程式。
本篇文章還是很值得一讀,整個分析的思路與想法都非常有趣,雖然不一定用得到但是也許未來有一天會有機會使用。
https://talawah.io/blog/extreme-http-performance-tuning-one-point-two-million/
同時也有27部Youtube影片,追蹤數超過54萬的網紅茶々茶(chachacha),也在其Youtube影片中提到,ASUS ROG-STRIX-RTX3090-O24G-GAMINGで事件が! モンハン実況8年目の女がお届けする、モンスターハンターライズ実況! MHRiseはswitch+プロコンでプレイ中 実況・解説・小ネタ・装備紹介・最新情報・グッズ開封など モンスターハンターの魅力を動画でお届けしていきた...
「extreme network」的推薦目錄:
- 關於extreme network 在 矽谷牛的耕田筆記 Facebook 的精選貼文
- 關於extreme network 在 矽谷牛的耕田筆記 Facebook 的精選貼文
- 關於extreme network 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
- 關於extreme network 在 茶々茶(chachacha) Youtube 的最佳解答
- 關於extreme network 在 Nasser Amparna Youtube 的最佳解答
- 關於extreme network 在 Hương Witch Youtube 的最佳解答
- 關於extreme network 在 Extreme Networks - GitHub 的評價
- 關於extreme network 在 Extreme Networks - 首頁| Facebook 的評價
extreme network 在 矽谷牛的耕田筆記 Facebook 的精選貼文
本文延續前篇效能校正的經驗談,上篇文章探討了關於系統呼叫, iptables 可以最佳化的部分,。本篇文章將繼續剩下最佳化步驟的探討。
Perfect Locality
預設情況下, Linux Kernel 會盡量平均地將請求給分配到所有的處理佇列,譬如 network queues, processes, CPUS. 大部分情況下這種機制運作良好不會有太多問題,不過如果今天要追求的不單單只是好的效能,而是極致的效能,則 locality 這個概念就要特別的去注意。
這篇文章中提到很多不同的方式,包含了 CPU Pinning, Receive Side Scaling(RSS), Transmit Packet Sterring(XPS)等,其實用比較簡單的介紹方式就是,希望可以使用固定的 CPU 來處理一條連線上的所有封包(進出),這樣帶來的好處有
1. CPU Cache 可以盡可能的去使用,減少各種 miss 產生的成本
2. 減少 context switch 帶來的成本
3. 減少跨 CPU 之間交換資料帶來的成本
4. 減少 lock 之間帶來的成本
除了 CPU Pin, RSS, XPS 外,還有 irqbalance, smp_affinity_list 等相關的概念需要一併學習,對於這個概念有興趣的讀者非常歡迎去找尋這類型的資料
接者是 SO_REUSEPORT 這個參數,創建 Socket 時使用這個參數能夠使得多個 Process 共用一個連接埠,底層 Kernel 會針對 src/dst{ip/port} 來產生對應的 Hash,並且決定當前封包要送給哪一個 Process。
這個方式搭配前述各種 CPU Pin, 中斷的最佳化則會遇到問題,因為可能底層將該封包送到 CPU2 結果這個函式又把封包重新分配到 CPU0, 這樣就導致該連線要跨 CPU 處理了。
為了解決這個問題, Linux Kernel 4.6 後有新的參數 SO_ATTACH_REUSEPORT_CBPF,使用者可以自行撰寫 BPF 的程式來決定如何分配封包。作者根據這過想法撰寫了一個 BPF 的程式,來確保這個機制可以與前述的最佳化穩定運作。
這次的最佳化帶來的 38% 的成長,這時候的封包處理能力從 603k req/s 提升到 834k req/s
原文中關於這次的最佳化還有一些後續探討,有興趣的可以閱讀
Interrupt Optimizations
當封包透過網路送到網卡後,網卡必須要通知 OS 讓它知道有封包來了,要記得處理。一切處理完畢後網卡就可以繼續等待新的封包過來並且再次發送中斷給 OS 處理封包。這個流程大部分情況也是運作良好,不過當有大量的封包不停傳送來時,頻繁的中斷其實也是會造成不小的額外成本。
為了解決這個問題,目前比較嶄新的網卡都有支援中斷聚合等功能,透過這個功能可以延後中斷一個小週期,而該週期內收到的所有封包只需要透過一次的中斷就可以來處理,藉此降低中斷的次數。更為進階的網卡甚至支援動態自行調整該週期的時間,譬如當網路空閒時,減少週期使得每個封包能夠盡快的發送中斷被處理,而當網路流量很大時則會加大該該週期時間來更有效地處理封包。
註: AWS ENA 有支持這種動態調整的機制
作者基於 AWS 開啟動態調整收端中斷時間的功能,整個效能提升了 14%,從 834k req/s 提升到 955k req/s。作者說這次的調整可以說是整篇文章中幾個非常強的改動,改動的地方少,效能提升明顯,同時背後的隱憂與限制也少。
除了上述中斷的方式外,另外一種則是透過 Busy Polling 這種針對低延遲性的方式。預設情況下其允訓設定為 blocked 的 socket 能夠消耗額外的 CPU Cycle 來讀取接下來的封包,可以將其想成一成一種混合體,當底層網卡告訴我有資料要讀取時,我預期接下來還會有更多的資料,因此我就透過輪詢的方式去多問幾個封包。
由於作者的應用程式是使用 non-blocking 的方式去讀寫封包,所以預設的方式是沒有辦法使用的。而該應用程式又是使用 epoll 來進行底層封包的讀寫。 epoll 於 kenel 4.12 後正式支援 busy polling 的方式,所以這部分就沒有太大的問題。文章中有滿多關於 busy_poll 的一些參數調整。
將這兩個機制給整合後,整體的效能提升達到 28%,從 834k req/s 到達 1060k req/s,同時 99%的 latency 也從 361μs 下降到 292μs.
同時這兩個機制導入後,整個系統每秒產生的硬體中斷數量也從 183k 降到 16k。 Context switches 的數字也從 6k 下降到 1k 左右。
下篇文章會繼續從剩下的三個最佳化策略繼續介紹
https://talawah.io/blog/extreme-http-performance-tuning-one-point-two-million/
extreme network 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
本文延續前篇效能校正的經驗談,上篇文章探討了關於應用程式本身可以最佳化的部分,包含了應用程式以及框架兩個部分。本篇文章將繼續剩下最佳化步驟的探討。
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/
extreme network 在 茶々茶(chachacha) Youtube 的最佳解答
ASUS ROG-STRIX-RTX3090-O24G-GAMINGで事件が!
モンハン実況8年目の女がお届けする、モンスターハンターライズ実況!
MHRiseはswitch+プロコンでプレイ中
実況・解説・小ネタ・装備紹介・最新情報・グッズ開封など
モンスターハンターの魅力を動画でお届けしていきたいと思います
01:13 ケース
01:54 マザーボード
02:16 CPU
03:44 メモリ
04:21 SSD
04:52 CPUクーラー
05:54 ケースファン(フロント)
06:09 ケースファン(リア)
06:28 キャプチャーボード
07:57 光学ドライブ
08:23 LANカード
09:02 電源
09:33 グラフィックボード
11:02 ライザーケーブル
11:56 VGAサポートステイ
12:12 OS
12:14 カードリーダー
12:38 3.5-5インチ変換マウンタ
12:49 マウス
13:14 キーボード
13:58 フットペダル
14:38 かかった金額
【配信部屋、実況機材紹介】
https://youtu.be/-OOvqU2KQis
【前回PC】
https://youtu.be/-4qTee5mR0o
✅パーツ一覧
【ケース】Fractal Design Define 7 XL
https://amzn.to/2LR0Ml7
【マザーボード】ASUS ROG Rampage VI Extreme Encore
https://amzn.to/3qLLGMj
【CPU】インテル Core i9-10980XE
https://amzn.to/2MeT04a
【メモリ】Crucial 32GB Kit (2 x 16GB) DDR4-2666 UDIMM
https://amzn.to/3sTEIH9
【グラフィックボード】ASUS ROG-STRIX-RTX3090-O24G-GAMING
https://amzn.to/39ckpN5
【SSD】Crucial P5 M.2 SSD 2TB
https://amzn.to/3qMeLaC
【電源】Seasonic PRIME-PX-1000
https://amzn.to/3qJIbWI
【CPUクーラー】noctua NH-D15
https://amzn.to/39a54fY
【ケースファン(フロント)】noctua NF-A14 PWM
https://amzn.to/3sQM1iK
【ケースファン(リア)】noctua NF-A14 industrialPPC-2000 PWM
https://amzn.to/2NsuWLH
【光学ドライブ】Pioneer BDR-212BK/WS
https://amzn.to/3iIgZER
【キャプチャーボード】I-O DATA GV-4K60/PCIE
https://amzn.to/3odJWdc
【カードリーダー】Owltech OWL-CR6U3UHS2
https://amzn.to/3c7jYFW
【LANカード】インテル イーサネット・コンバージド・ネットワーク・アダプター X550-T1
https://ark.intel.com/content/www/jp/ja/ark/products/88208/intel-ethernet-converged-network-adapter-x550-t1.html
【ライザーケーブル】Cooler Master MasterAccessory Riser Cable PCIE 3.0 X16 VER. 2 - 300MM
https://amzn.to/3sL86PA
【VGAサポートステイ】長尾製作所 VGAサポートステイS マグネット式
https://amzn.to/2LR6pzL
【OS】Microsoft Windows 10
https://www.microsoft.com/ja-jp/store/b/windows
【3.5-5インチ変換マウンタ】Ainex HDM-07B
https://amzn.to/3sQNwgG
【マウス】エレコム トラックボールマウス
https://amzn.to/3c7YNn0
【キーボード】ロジクール K840 メカニカルキーボード
https://amzn.to/36wHDf2
【フットペダル】ルートアール メカニカルスイッチ搭載 USBフットペダルスイッチ 3ペダル
https://amzn.to/2YbLxWa
#モンスターハンター #MHRise #茶々茶
✅通常PS4対応の外付けSSD→https://amzn.to/2lpIwBL
✅SSDロード時間比較動画→https://youtu.be/YUYJQGfxPgw
✅配信部屋、実況機材紹介→https://youtu.be/-OOvqU2KQis
✅PS4Proに換装したSSD→https://amzn.to/2HXPt7I
✅サラウンド音声→https://amzn.to/2TbxA9Z
✅FaceRig用カメラ→https://amzn.to/2E5LIrE
✅顔出し機材紹介動画→https://youtu.be/qaAl7UkBJJc
🌵MHW動画(解説・攻略・新情報)は毎日17時頃に投稿中
🌵MHWライブは月・木以外の20時~24時に配信中
🌵週刊ファミ通でアイスボーンのコラム連載中
🌵時間変更のお知らせはTwitterで→http://twitter.com/co1971385
🌵スタンプが使える有料メンバー登録はこちら→https://www.youtube.com/channel/UCfVv...
━━━━━━━━━━━━━━━━━━━
MHW100
#茶々茶動画
![post-title](https://i.ytimg.com/vi/ul0VViwohog/hqdefault.jpg)
extreme network 在 Nasser Amparna Youtube 的最佳解答
#JVlogs
I've been in Singapore for 5 years already but this is the first time I'm riding this #GX5ExtremeSwing at Clarke Quay, Singapore.
Roxanne is my go to person whenever I want to experience extreme sports or rides! Thanks OTAN!
it was short but hell yeah, those butterflies in my stomach when we were UP THERE!!! DAMNNN!!! #Singapore
LIVESTREAM TAYO
CLICK THIS KUMU DOWNLOAD LINK
https://app.kumu.ph/lillboykyut
THE ONE THAT YOU LOVE by NASSER with HAZEL FAITH
https://backl.ink/35192122
CHASING CARS by NASSER
iTunes: https://music.apple.com/us/album/chasing-cars-single/1461663065
Spotify: https://open.spotify.com/album/5TiLgOD46qAYKGneAcivcq
THROUGH THE RAIN by NASSER
iTunes: https://itunes.apple.com/ph/album/through-the-rain-single/1439868889
SPOTIFY: https://open.spotify.com/album/5iKAdZhxcJEqnZp8jEVsO6?si=Vh-i_lwuSVKC_wy7925ynA
I HONESTLY LOVE YOU by NASSER
iTunes: https://itunes.apple.com/ph/album/i-honestly-love-you-single/1438043122
Spotify: https://open.spotify.com/track/0OaGV1brqiPG82mXmV9yUE?si=dOKbZwW9ROOElk6kxYPQZA
YOUR LOVE by NASSER
iTunes: https://itunes.apple.com/ph/album/your-love/1423354016?i=1423354019
Spotify: https://open.spotify.com/track/6mPLJNLRVrTY07IMSwp6Ee
Available also in Apple Music, Deezer, Amazon Music
THANK YOU CURVE ENTERTAINMENT AND GMA NETWORK
DON' T FORGET TO ENJOY WHILE WATCHING.
HIT LIKE and don't forget to SUBSCRIBE! KUDOS!
===================
LET'S CONNECT
INSTAGRAM: https://www.instagram.com/nasseramparna/
FACEBOOK: https://www.facebook.com/ncamparna
TWITTER: https://twitter.com/nasseramparna
TUMBLR: http://lillboykyut.tumblr.com/
===================
MUSIC:
* Youtube Music Library
* NCS Release
TATA for NOW!
No copyright intended. All content used in adherence to Fair Use copyright law.
Please Don't forget to SUBSCRIBE
God bless everyone!
![post-title](https://i.ytimg.com/vi/kUsPGGdHN-k/hqdefault.jpg)
extreme network 在 Hương Witch Youtube 的最佳解答
ey yoooo~ hình như các bạn rất thích kiểu makeup gần đây của tớ ^^ tone hồng nhẹ nhàng í thì video này có những sp mà mình vác đi Bali cùng nè. 1 buổi sáng khá mệt mỏi sau 1 tour đi vòng quanh Ubud, Bali về đuối như cá chuối thì phải chịu khó ăn uống, rồi dưỡng da nữa.
Bí kíp để lớp makeup luôn rạng rỡ cả ngày là dưỡng da đầy đủ trước khi makeup nè.
Bữa h đắp mặt nạ như ăn ấy :))) hahaa nghiện đắp mặt nạ cực kì.
Và mặt nạ hồi sinh làn da mệt mỏi của mị trong Bali trip là của Doosun Cosmetics Hàn Quốc đã chính thức có mặt ở VN rrrrr yeah yah~
Bạn nào mê mặt nạ và dưỡng da thì tìm thêm thông tin ở đây nha:
https://www.facebook.com/Doosuncosmeticsvn/?epa=SEARCH_BOX
Showroom chính thức của Doosun tại VN: 65 Thái Hà, Trung Liệt, Đống Đa, Hà Nội. Tel: 024 32899505
Ai cần tìm sản phẩm thì mị để ở đây nhé:
Allut.D Promise Mask: https://shorten.asia/MBDzB6Du
Ultimate Revitalizer Cream: https://shorten.asia/kXQCZq7K
Dear, Klairs Soft Airy UV Essence SPF50+ PA++++: https://shorten.asia/CBYaeu3H
MKUP Extreme Water Primer: https://www.mkupvn.com/?ref=2004hw
DIOR - Forever Skin Glow: https://shorten.asia/f24Qa71g
NARS Radiant Creamy Concealer: https://shorten.asia/4P52FJ3m
Too Faced White Peach Eye Shadow Pallete: https://shorten.asia/maDFudrP
HUDA BEAUTY Nude Obsessions - Rich: https://shorten.asia/tm7Z9nZB
Merzy The First Slim Gel Eyeliner: https://shorten.asia/aHKmWCxt
Heroine Make Mascara: https://shorten.asia/TNHbaBkt
Lemonade Want It Got It Dual Eyebrow: https://shorten.asia/qwceNBdU
TheFaceShop Hydro Cushion Blush: https://shorten.asia/p7Sgq9Ta
MKUP Angel's Glow Highlighter: https://www.mkupvn.com/?ref=2004hw
Dior Addict Lip Glow - 004: https://shorten.asia/qJqJQ9SX
Son kem lì stimmung Liquid Velvet Lip: https://shorten.asia/JcKWM4U6
♥ You are welcome babe~ ♥♥♥
♥ Đừng ngần ngại pm cho Witch / Connect with me:
►Email: huongwitch.beauty@gmail.com
►Facebook : https://www.facebook.com/huong.witch
►Instagram: https://www.instagram.com/huong.witch/
►TikTok: hwitch99
► Kênh Youtube trực thuộc hệ thống Schannel Network !
♥ Witch là đứa "hâm hấp" như thế nào? / Fun facts about me:
https://goo.gl/29nHMy
♥ Chuyện "bí mật" của riêng con gái nè / Everything about girl / Girl talks:
https://goo.gl/CeZU2b
♥ Đi chơi khắp nơi tận hưởng cuộc sống tươi đẹp nào / Let's go with Witch:
https://goo.gl/MBYYCU
♥ Bàn luận, chặt chém tất tần tật các loại mỹ phẩm / Review cosmetics:
https://goo.gl/8PibsV
♥ Mỗi ngày đều đổi thay, hãy biến hoá bản thân với Witch / Makeover with Witch:
https://goo.gl/KtpUZB
#huongwitch
#traveltobali
#grwminbali
#huongwitchreview
![post-title](https://i.ytimg.com/vi/vEmeZoxLRnA/hqdefault.jpg)
extreme network 在 Extreme Networks - 首頁| Facebook 的推薦與評價
Extreme Networks , San Jose, California 。 20946 個讚· 246 人正在談論這個。 We are the industry's first cloud-driven, end-to-end enterprise networking ... ... <看更多>
extreme network 在 Extreme Networks - GitHub 的推薦與評價
Extreme Networks. Extreme Networks has 45 repositories available. Follow their code on GitHub. ... <看更多>