欧美vvv,亚洲第一成人在线,亚洲成人欧美日韩在线观看,日本猛少妇猛色XXXXX猛叫

新聞資訊

    atop 是一款開源的單機性能監測工具,支持實時觀測的同時、也支持讀取歷史文件排查問題。另外一個優點是除提供 CPU、MEM、DISK 等全局指標外,還提供進程、線程級別的各項指標監控數據。鑒于 atop 的這些優點,字節跳動基于社區的 atop 進行優化,目前已迭代 3 個版本,穩定運行接近三年。本文將和大家分享字節跳動內部 atop 工具的新特性及使用情況。

    傳統特性介紹

    What - atop 是什么

    atop 本身是一個單機性能監測工具,每間隔 interval(實時監控默認間隔是 10s,而后臺采集社區默認間隔是 600s,即 10min)時間去采集本機常用的全局指標和進程指標。直接執行atop即可展示,大致分為上下兩部分,分別展示全局指標和進程指標。同時支持快捷鍵切換多種“界面模式”,用于專門查看進程的 CPU、內存、磁盤等指標信息。

    直觀展示


    運行方式

    根據用戶使用需求,能夠以多種形式運行。一種是直接運行 atop 二進制,顯示實時數據;一種是以服務形式(systemd 或 SysV Init)部署在物理機、虛擬機或容器里,作為常駐進程,采集數據寫入磁盤,以天為分割單位計入不同文件;一種是使用atop -r $atop_log_file按需讀取歷史數據。是一款少見的能夠支持查看詳細歷史記錄的工具,這在定位非實時問題時尤其有幫助。

    代碼結構

    When - 什么時候使用 atop

    atop 記錄了很多指標,如全局的 CPU、CPL、MEM、DISK、NET、PSI,進程的 PID、PPID、TID、CMD、SYSCPU、USRCPU、CPUNR、RSIZE、PSIZE、RDDSK、WRDSK 等,稱得上一個大而全的工具。而 atop 本身占有資源很少,并不會帶來額外的性能開銷。因此很多場景都可以使用 atop 來查看各種指標,進而幫助用戶更好的了解業務進程在操作系統中的呈現。舉例如下:

    集群

    目前上游還不支持 atop 指標在集群粒度的聚合,但字節內部提供 JSON 數據的輸出,可通過數據處理一系列流程將隸屬同一集群的所有機器的 atop 數據都入庫存儲(可選擇性按時間對數據進行稀釋)。并按照業務需求加以展示,如分別對全局常用指標和某類業務(多進程 PID 加以聚合)各項指標繪制成曲線圖,用于觀測 24h 時間周期內的數據變化;也可以用于統計基礎服務的利用率。

    單機

    在線排查

    業務高峰期,如果發現抖動,可直接運行atop綜合查看全局指標和進程指標的哪項指標異常,進而定位排查問題。一般來說先觀察全局指標來縮小范圍,看是 CPU、MEM、磁盤讀寫、網絡中的哪項引發的問題。常見問題有,如果總 CPU 的 sys 態及 user 態飆高、并且只有幾個單 CPU 核很高,多半是綁核不均勻引起的;如果 CPL(CPU Load Average)不高但 CPU 的中斷 irq 很高,多半是 IO 操作引發的。

    歷史定位

    前文提到過,常用的監控工具中,能夠提供詳細歷史數據并且能高效保存的幾乎沒有;如果需要存儲,需要人工干預、打通整個流程。而 atop 本身提供了日志存儲功能,并自帶日志壓縮機制,盡量確保存儲無壓力。為保證歷史日志不會將系統盤打滿,字節開發了定制化存儲位置和存儲天數的功能,將在下文詳細說明。

    功能上線

    atop 有個 interval 參數,可通過配置,來定制化數據采集的間隔,如 10s、甚至 1s。如果業務有新功能上線,想自測新功能對系統帶來的影響,可以將 interval 設置成 1 秒,實時觀測各指標的動態變化。

    性能優化

    atop 提供細粒度的進程態各項指標值的展示,在業務調優過程中,可參考進程態的數據變化來衡量調優是否符合預期。

    告警輔助

    atop 的數據比較全,有很多其他監控工具不具備的指標,如 oom-kill、per NUMA 指標等??捎糜诟婢瘮祿碓吹难a充。

    How - 如何使用 atop

    atop 針對全局指標和進程指標分別提供了很多快捷鍵,供用戶查看更多的指標。接下來列舉一些常見問題,詳細參數可以通過man atop進行查看。

    如何使用 atop?如何查看歷史數據?

    用戶可直接運行 atop 命令查看實時的信息,也可以通過 atop -r /var/log/atop/atop_$date 文件查看歷史信息。讀取文件時有多種交互方式,比如-b 代表從什么時刻開始讀,-e 代表讀取到什么時刻(在社區支持分鐘級別讀取的基礎上,字節內部支持秒級別讀取)。快捷鍵說明如下圖:

    快捷鍵說明b輸入時間,格式為"12:23"(時:分)t前進 10sT后退 10sg按 CPU 使用率排序,默認排序方式m按內存使用率降序排列d按磁盤使用率降序排列y查看線程信息j查看 container 聚合信息c查看詳細的 command linel定制化查看每個 CPU 核/每個磁盤/每個網卡的信息f展示全局指標中 fixed 的指標Q根據進程狀態過濾,如 R|S|D|Z 等I按照 PID 進行搜索(注:大寫的 i)

    非 root 用戶是否可以查看日志?

    可以,默認有讀權限。但是安裝包、重啟服務、修改日志存儲天數等還是需要 root 權限。但非 root 用戶按 d 無權限實時查看進程的磁盤信息。這是因為非 root 用戶默認被禁止讀取其他用戶的/proc/$pid/io 文件,反映到 atop 代碼里就是沒有設置相關標志位,導致無法查看磁盤。

    但查看歷史文件數據可以打消這個魔咒,也就是說非 root 用戶可以通過atop -r /var/log/atop/atop_$date 查看磁盤相關數據,畢竟 atop 寫日志時是以 root 用戶在運行。

    atop 如何查看線程信息

    默認只有進程信息展示,按 y 可查看線程。如下圖,白色為進程,黃色為該進程的所有線程。再次按 y,線程展示消失。

    netatop:記錄進程態網絡指標

    進程態網絡相關的指標是通過定制化安裝 netatop kernel module 完成的。本質上是通過 netfilter hook 獲取進程數據,額外有個 netatopd daemon 負責數據記錄及壓縮。在數據量比較大的場景,會影響到性能,因此默認不開啟該功能。如果開啟,可以按 n 查看 per 進程的網絡指標。

    磁盤常見問題

    • 全局指標中 DSK 行的 busy 代表什么?
      • busy=io_ms/per_cpu_ms,其中 io_ms 是處理 io 所花費的時間(ms 單位是毫秒),busy 就是過去 10s 內 io 處理的時間占單 CPU 時間的比例(其中 io wait 并不真實占用 CPU 資源,而是處于 sleep 狀態)
    • 按 d 之后,查看到進程欄的 DSK 列 很高,表示什么?
      • DSK 列的數值是個相對比,表示該進程占當前展示的所有進程之和的比率,是個相對值; 換句話說,該列對于排查是哪個進程導致的 heavy load 并無意義。
      • 查看進程的磁盤利用率,要看 RDDSK, WRDSK 這兩列絕對值,表示所屬進程的讀/寫字節數。

    字節版新特性一覽

    NUMA 聚合

    隨著云原生場景的推進,各云廠商正嘗試將不同特征的業務(如優先級不同、延遲敏感度不同的多個業務)混部在同一臺物理機上,盡量充分地將機器的物理資源利用起來,以提高單機的資源利用率。常見的混部場景有在離線混部,而常用的混部手法是將不同業務綁定不同 NUMA,從物理上達到隔離。那么查看 NUMA 粒度而不是整機粒度的 CPU、MEM 等指標則更有意義?;谶@迫切的需求,字節內部實現了 NUMA 的監控粒度,相關代碼已被社區接收,展示效果如下:

    https://github.com/Atoptool/atop/pull/163

    • 支持 per NUMA 粒度內存相關信息查看

    例:一臺 4NUMA 的機器,其 NUM(Memory per NUMA)展示如下圖

    • 支持查看 per NUMA 內存碎片化,使用百分比展示

    例:如上圖 NUM 的 frag 字段。

    • 支持 per NUMA 粒度 CPU 相關指標的聚合

    例:一臺 4NUMA,運行了虛擬機的 arm 機器上,其 NUC(CPU per NUMA)展示如下圖

    JSON 格式輸出

    前文提到過,目前社區不支持 atop 指標在集群粒度的聚合;除此之外,atop 作為一個單機工具,如果業務想查看某臺服務器的監控,需要申請權限登錄到機器上,這在某些場景下比較受限。因此想到有沒有一種方式,針對擁有某個集群機器權限的同學來說,可以直接查看該集群內所有機器的 atop 數據,而無需再走工單申請單臺機器權限,即網頁版 atop。

    考慮到數據處理過程中 JSON 數據的強兼容性,敲定將 atop 的原始數據以 JSON 數據輸出:支持輸出到終端,以及寫本地 unix domain socket。針對前者,主要是用于本機的一些數據調試,也可以與其他組件打通,如數據報警等。針對本地 UDS,atop 作為 server 端,提供一種數據輸出的能力;另外需要引入 client 端、監聽并獲取 atop 數據,同時作為數據源端、與數據處理打通、將本機 atop 數據流過數據通路落入數據庫,供業務方使用。整體流程如下:

    用法如下:

    Currently we support three types of output:
    1. atop -O stdio
    2. atop -O only
    3. atop -O unixsock -w /path/to/file 10 //Make unixsock non-block to make sure this will not block main engine. And if the unix remote server re-launches, atop will re-connect and continue to work.
       
    Usage examples:
      ./atop
      ./atop -P ALL
      ./atop -O only // overwrite parseout, show json to stdio only
      ./atop -O stdio -P ALL // both parseout and json stdio
      ./atop -O stdio -w atop.log // print to stdio, as well as file
      ./atop -O unixsock // overwrite parseout, show json to unixsock
      ./atop -O unixsock -P ALL // both parseout and json unixsock
      ./atop -O unixsock -w atop.log // write json to unixsock and file
       
    And the detail JSON output format is as follows:
    {
     "ip": "a.b.c.d",
     "timestamp": 1565256314,
     "CPU": {
      "hertz": 100,
      ...
      "cpu_nums": 40
     },
     "cpu": [
      {
       "hertz": 100,
       ...
       "cpu_id": 0
      },
      ...
      {
       "hertz": 100,
       ...
       "cpu_id": 39
      }
     ],
     ...
     "PRC": [
      {
       "pid": 1,
       "p_name": "(systemd)"
      },
      ...
      {
       "pid": 73,
       "p_name": "(migration/12)"
      }
     ]
    }


    交互界面改進

    雖然 atop 的指標很全,且有歷史記錄可以查詢,但依舊有不少聲音提到 atop 做的還有欠缺。比如無法將所有 CPU 的使用情況同時展示,即使將顯示器橫過來也不能解決,這在高達 128 核的物理機上尤其頭痛。為解決這個痛點,參考類似 htop 的展示方式,結合 atop 本身代碼,從零開始用 ncurses 加以繪制,展示效果如下。目前只支持 CPU 和 MEM 的展示,如有其他需求,歡迎聯系我們。

    支持類似 htop 直觀的展示所有 CPU 和內存的使用情況,但新增 NUMA 粒度的支持。一是解決因 CPU 核數太多展示不全的問題;進一步可以縱覽所有 CPU 的負載,直觀判斷綁核是否有問題

    • 雙 NUMA 使用 bar 展示

    • 雙 NUMA 使用百分比展示

    //注:上面兩張圖為壓測場景
    user態:stress -c 20
    sys態:iperf -s -i 1 && iperf -c $ip -i 6 -t 600
    
    //numactl -H的結果如下

    • 4NUMA 使用 bar 展示

    • 4NUMA 使用百分比展示

    日志相關

    前面提到,atop 支持歷史日志的記錄,這在定位排查非實時問題時非常有幫助。然而在字節內部,曾因 atop 日志過大引發過比較嚴重的問題。起因是 atop 默認會將日志寫到/var/log/atop 目錄下,并且記錄所有的進程、線程信息到日志里。有些業務服務器(如 Java 業務)動輒每 10 秒幾萬個線程,一天的日志量高達幾 G,7 天高達幾十 G,如果服務器本身的系統盤存儲空間很緊張,就會造成系統盤打滿、登錄不上機器的嚴重后果。

    為解決日志相關的問題,字節內部在新版本中推出了以下特性:

    • 默認只存儲每個進程的 top100 線程

    根據日常排查問題來看,一般只關心 topM 的進程或每個進程的 topN 線程。觀察每個進程,通常超過 top100 線程的 CPU 或 MEM 都處于不活躍狀態,對于排查問題來說意義不大,沒必要記錄到日志。據此字節內部引入-H 參數,通過指定-H 100 可以過濾掉 top100(按照 CPU/MEM/DISK 比例之和倒敘排列)之外的線程,大大減少了日志存儲量,尤其適用于線程數目多達幾千或幾萬的 Java 業務場景。

    • 使用 systemd timer 控制 daily 日志重定位

    引用上游最新的 atop-rotate.timer 和 atop-rotate.service,取代之前的 cronjob。避免某些機器修改時區后未重啟 cron.service,導致 cron 服務重啟時間未遵守本機時間,寫 atop 日志時間出錯。

    • 支持用戶修改 atop 日志存儲時間,默認存儲為最近 7 天

    上游默認存儲天數為 30 天,在實際排查問題時必要性不大,反而浪費了系統盤的存儲空間。如有需要,可以通過 atop-json 機制將本機日志傳輸到統一的存儲池子中,采取數據稀釋的方式(如保留 topM 進程、按時間順序增大記錄間隔等)進行保存。字節內部在 atoprc 中引入generations變量,表示存儲天數為generations+2天。

    例:echo 'generations 1' >> /etc/atoprc && systemctl restart atop代表只保留存儲最近 3 天的日志

    • 支持用戶修改 atop 日志存儲位置,默認是/var/log/atop

    有些服務器雖然系統盤存儲空間小,但數據盤有多塊,容量高達幾 T,針對這種場景,用戶可以通過修改 atop 日志存儲位置,來緩解存儲壓力。字節內部在 atoprc 中引入 logpath 變量,標識日志存儲目錄。

    例:echo 'logpath /data00/log/atop' >> /etc/atoprc && systemctl restart atop將日志存儲到/data00/log/atop目錄下

    • 限制 atop 日志存儲總量為 10G,超過 10G 會按照時間倒序刪除日志文件
    • 解決因 systemd 沒能 daily 重啟 atop 服務,導致持續寫相同文件,導致單個文件過大的問題

    其他指標及特性

    • 通過-b/-e 參數指定時間范圍時支持精確到秒
    • 新增 compact_stall、allocastall、InCsumErrors 等指標
    • 關閉 perfevent 采集 instr 和 cycle 兩項指標的功能,釋放 PMU 給其它專用工具,如 perf
    • 修復低于 4.19 內核,用戶態讀取/proc/$pid/cpuset 文件遇到 css offline、導致永久陷入內核態的問題
    • 修復/run/pacct_source 文件過大,導致 tmpfs 被占滿的問題

    落地使用情況

    到目前為止,字節已穩定運行接近三年,覆蓋公司全量服務器,推出 3 個版本。

    字節內部目前在用代碼已 push 到相關分支,歡迎使用:

    • https://github.com/bytedance/atop/commits/bytedance-internal-v2.6.0%2Bbyted2

    相關 repo 請訪問:

    • https://github.com/bytedance/atop

    其中 master 分支緊跟社區 atop 的 master 分支,其余分支是一些已推社區但尚未被合入的特性或 bug fix(如 Fix atop stuck when reading offline css 雖然本質上是內核的 bug,但可以通過修改 atop 代碼加以規避,避免重啟服務器)。

    合作與共建

    新版本 atop 的部分特性已經推社區并被上游接收,接下來還會將其余特性繼續推上游,更好的回饋社區。


    關于字節跳動系統部 STE 團隊:

    字節跳動系統部 STE 團隊 (STE=System Technologies & Engineering,系統技術與工程) 一直致力于操作系統內核與虛擬化、系統基礎軟件與基礎庫的構建和性能優化、超大規模數據中心的系統穩定性和可靠性建設、新硬件與軟件的協同設計等基礎技術領域的研發與工程化落地,具備全面的基礎軟件工程能力,為字節上層業務保駕護航。同時,團隊積極關注社區技術動向,擁抱開源和標準。

    更多招聘信息,可郵件聯系 chenziying@bytedance.com 獲取。

    Windows 11 安卓子系統 (Windows Subsystem for Android) 包括 Linux 內核和基于 Android 開源項目(AOSP)版本的 Android 操作系統。該子系統在 Hyper-V 虛擬機中運行,就像 Linux 子系統一樣,可以將 AOSP 環境中 App 的運行時和 API 映射到 Windows 圖形層、內存緩沖區、輸入模式、物理和虛擬設備以及傳感器,可以在英特爾、AMD、高通的 CPU 上運行。


    官方中文名稱:適用于 Android 的 Windows 子系統

    英文名稱:Windows Subsystem for Android

    習慣叫法:Windows11/Win11 安卓子系統

    英文簡稱:WSA



    安卓子系統本身有硬件要求,如果硬件配置較低,運行可能會出現卡頓、甚至無法運行,所以微軟也公布了相關文檔。


    以下是基礎要求:


    1、內存方面:PC至少有8GB內存才可以下載安裝安卓子系統,微軟推薦16GB內存以獲得最佳體驗


    2、存儲方面:Windows 11系統盤必須是固態硬盤才可以安裝安卓子系統,如果是機械盤則不滿足條件


    3、處理器方面:滿足Windows 11處理器要求,最低為英特爾第8代酷睿i3+、AMD Ryzen 3000+、高通驍龍8c+


    4、處理器類型:x64或ARM64架構,不支持32位處理器,當然Windows 11也沒有32位版


    5、虛擬化平臺:需開啟虛擬化支持,虛擬化通常在BIOS里開啟,例如Intel VT虛擬化平臺


    滿足條件后如何安裝?


    一、獲取安裝


    1、這第一步,當然是把Windows 11系統更新到比較新的版本,比如:Win11 22H2;



    2、修改國家或地區為美國,這樣做的目的是由于微軟采用分批推送WSA的策略,暫時還不包括中國;


    設置 > 時間和語言 > 語言和區域,區域設置為美國



    3、打開 Microsoft Store (微軟商店) 搜索 Amazon Appstore,點擊安裝,然后按提示往下操作即可;



    4、重啟電腦,進入桌面后,Windows Subsystem for Android 就自動打開了;



    然后就進入亞馬遜應用商店登錄界面,有亞馬遜賬戶的用戶,可以選擇登錄進去看看。



    不過,在測試的過程中,也發現了進入桌面后,不能自動打開 Windows Subsystem for Android 的情況。這時候,我們可以使用Windows 搜索,找到適用于 Android 的 Windows 子系統設置。



    5、第一次使用,打開文件,以測試能否正常運行;



    如果能夠直接打開 Android 的文件管理器,那么恭喜你,可以直接運行,如果不能啟動,甚至不能下載安裝,后面還有解決方法。



    二、安裝應用


    1、打開 WSA 的開發人員模式,確保出現 127.0.0.1:58526 這個本地 IP 及端口;



    2、我們可以使用第三方工具,比如WSA工具箱安裝安卓APP;



    PS:說到這里,我覺得肯定會有用戶問,為什么不使用ADB命令安裝apk文件呢?是因為命令對于大部分的用戶來說,操作起來較為困難,所以選擇直接通過一些第三方的工具安裝安卓APP會更簡單方便。當然,感興趣的用戶可以了解一下使用ADB命令安裝apk文件的方法。


    如果覺得以上步驟操作起來比較麻煩,也可以試試360手機助手推出的Win11安卓助手。360 Win11安卓助手 WsaTool 是一款綠色軟件,無需安裝,也不修改注冊表,殺毒軟件和防火墻也不用關。軟件界面非常簡潔,左邊是連接配置、已裝應用和關于三個選項,右邊是詳細的內容。



    WSA無法啟動解決方法


    1、無法啟動適用于 Android 的Windows 子系統


    1)確保在可選的 Windows 功能中啟用虛擬機平臺

    2)確保設備在 bios 中啟用了虛擬化

    3)如果正在虛擬機中運行適用于 Android 的Windows 子系統,確保已為主機上的虛擬機啟用嵌套虛擬化


    一般情況下,沒有開啟虛擬機平臺和虛擬化,就會彈出這樣的提示。



    1)開啟虛擬機平臺


    打開控制面板 > 程序 > 啟用或關閉 Windows 功能,勾選虛擬機平臺,確定、重啟電腦即可。



    2)BIOS 虛擬化


    任務管理器里可以查看是否已啟用虛擬化。



    如果已禁用,在主板 BIOS 中啟用虛擬化,一般 Intel 平臺叫 Intel VT ,AMD 平臺叫做 SVM ,而部分 AMD 平臺還需要開啟 NX Mode 。



    如果還是無法運行,管理員身份運行Windows PowerShell ,執行以下命令并重啟電腦。


    bcdedit /set hypervisorlaunchtype auto



    Windows11 – 安卓子系統特色

    1)支持將安卓 App 固定到開始菜單或任務欄,并通過鼠標、觸摸或筆輸入與它們交互

    2)安卓 App 可集成到 Alt + Tab 和任務視圖中,并能在 App 之間快速切換

    3)可在操作中心中查看安卓 App 的推送通知,或在 Windows 應用程序和安卓 App 之間共享剪貼板

    4)微軟還添加了無障礙體驗,許多 Windows 輔助功能設置都適用于安卓 App


    如果你也想在Win11系統中體驗安卓應用,可以按照上述的方法去安裝適用于 Android 的 Windows 子系統。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有