{"id":5578,"date":"2026-04-21T21:11:16","date_gmt":"2026-04-21T12:11:16","guid":{"rendered":"https:\/\/eternalsphere.net\/echoes\/?p=5578"},"modified":"2026-06-06T08:23:21","modified_gmt":"2026-06-05T23:23:21","slug":"f72kltnjt9lyywt","status":"publish","type":"post","link":"https:\/\/eternalsphere.net\/echoes\/index.php\/2026\/04\/21\/f72kltnjt9lyywt\/","title":{"rendered":"\u7528\u811a\u672c\u628a\u684c\u9762 Linux \u7684\u786c\u4ef6\u6027\u80fd\u68c0\u6d4b\u56fa\u5316\u4e0b\u6765"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u80cc\u666f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u684c\u9762\u7cfb\u7edf\u7684\u6027\u80fd\u68c0\u67e5\uff0c\u6700\u6015\u4e24\u4ef6\u4e8b\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u7b2c\u4e00\uff0c\u6d4b\u8bd5\u547d\u4ee4\u6563\u843d\u5728\u5386\u53f2\u8bb0\u5f55\u91cc\uff0c\u4e0b\u6b21\u60f3\u590d\u6d4b\u65f6\u5df2\u7ecf\u627e\u4e0d\u5168\u3002<br>\u7b2c\u4e8c\uff0c\u53ea\u76ef\u7740\u5355\u4e2a\u8dd1\u5206\u6570\u5b57\uff0c\u5374\u6ca1\u6709\u628a\u7cfb\u7edf\u4fe1\u606f\u3001\u5b58\u50a8\u5065\u5eb7\u3001\u542f\u52a8\u94fe\u3001\u56fe\u5f62\u6808\u548c\u6301\u7eed\u8d1f\u8f7d\u4e00\u8d77\u8bb0\u5f55\u4e0b\u6765\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u66f4\u7a33\u59a5\u7684\u505a\u6cd5\uff0c\u662f\u628a\u6574\u5957\u68c0\u67e5\u6d41\u7a0b\u5199\u6210\u811a\u672c\uff0c\u7edf\u4e00\u8f93\u51fa\u5230\u4e00\u4efd\u6587\u672c\u62a5\u544a\u91cc\u3002\u8fd9\u6837\u505a\u7684\u4ef7\u503c\u4e0d\u53ea\u662f\u201c\u6d4b\u4e00\u6b21\u201d\uff0c\u800c\u662f\u628a\u6027\u80fd\u68c0\u6d4b\u53d8\u6210\u53ef\u91cd\u590d\u3001\u53ef\u5bf9\u6bd4\u3001\u53ef\u957f\u671f\u590d\u7528\u7684\u65b9\u6cd5\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u7bc7\u6587\u7ae0\u6574\u7406\u7684\u662f\u4e00\u5957 <strong>\u901a\u7528\u684c\u9762 Linux \u786c\u4ef6\u6027\u80fd\u68c0\u6d4b\u811a\u672c\u65b9\u6848<\/strong>\u3002\u91cd\u70b9\u653e\u5728\u811a\u672c\u672c\u8eab\uff0c\u5305\u62ec\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u7f3a\u5931\u5de5\u5177\u5148\u68c0\u67e5<\/li>\n\n\n\n<li>\u80fd\u81ea\u52a8\u5b89\u88c5\u7684\u5c3d\u91cf\u81ea\u52a8\u5b89\u88c5<\/li>\n\n\n\n<li>\u7ed3\u679c\u7edf\u4e00\u5199\u5165\u4e00\u4e2a\u6587\u672c\u6587\u4ef6<\/li>\n\n\n\n<li>\u8986\u76d6 CPU\u3001\u5185\u5b58\u3001\u5b58\u50a8\u3001\u56fe\u5f62\u3001\u542f\u52a8\u94fe\u548c\u6301\u7eed\u8d1f\u8f7d<\/li>\n\n\n\n<li>\u907f\u514d\u7834\u574f\u6027\u6d4b\u8bd5<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u8fd9\u7c7b\u811a\u672c\u8981\u89e3\u51b3\u4ec0\u4e48\u95ee\u9898<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u5957\u771f\u6b63\u6709\u7528\u7684\u68c0\u6d4b\u811a\u672c\uff0c\u81f3\u5c11\u5e94\u8be5\u56de\u7b54\u4e0b\u9762\u8fd9\u4e9b\u95ee\u9898\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u7cfb\u7edf\u5f53\u524d\u662f\u5426\u6b63\u5e38\u53d1\u6325\u6027\u80fd<\/li>\n\n\n\n<li>\u74f6\u9888\u66f4\u50cf\u51fa\u5728 CPU\u3001\u5185\u5b58\u3001\u56fe\u5f62\u8fd8\u662f\u78c1\u76d8<\/li>\n\n\n\n<li>\u542f\u52a8\u6162\u662f\u786c\u4ef6\u4e0d\u591f\uff0c\u8fd8\u662f\u670d\u52a1\u7b49\u5f85\u94fe\u592a\u957f<\/li>\n\n\n\n<li>\u56fe\u5f62\u9a71\u52a8\u662f\u5426\u6b63\u5e38\u5de5\u4f5c\uff0c\u662f\u5426\u8bef\u843d\u5230\u8f6f\u4ef6\u6e32\u67d3<\/li>\n\n\n\n<li>\u957f\u65f6\u95f4\u8d1f\u8f7d\u4e0b\u662f\u5426\u660e\u663e\u6389\u901f<\/li>\n\n\n\n<li>\u6d4b\u8bd5\u7ed3\u679c\u662f\u5426\u80fd\u6c89\u6dc0\u6210\u6587\u5b57\uff0c\u65b9\u4fbf\u540e\u7eed\u590d\u76d8<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u53ea\u662f\u4e34\u65f6\u8dd1\u51e0\u4e2a\u547d\u4ee4\uff0c\u5f97\u5230\u7684\u662f\u201c\u5f53\u65f6\u7684\u4e00\u4e32\u8f93\u51fa\u201d\u3002<br>\u5982\u679c\u505a\u6210\u811a\u672c\uff0c\u5f97\u5230\u7684\u662f\u201c\u4ee5\u540e\u8fd8\u80fd\u91cd\u590d\u4f7f\u7528\u7684\u4e00\u5957\u6d41\u7a0b\u201d\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u8bbe\u8ba1\u539f\u5219<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u7c7b\u811a\u672c\u7684\u6838\u5fc3\u539f\u5219\u5e76\u4e0d\u590d\u6742\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. \u5148\u8865\u5de5\u5177\uff0c\u518d\u8dd1\u6d4b\u8bd5<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u811a\u672c\u4e0d\u5e94\u8be5\u5047\u8bbe\u6d4b\u8bd5\u73af\u5883\u5df2\u7ecf\u5b8c\u6574\u3002<br>\u50cf <code>fio<\/code>\u3001<code>sysbench<\/code>\u3001<code>smartctl<\/code>\u3001<code>glmark2<\/code>\u3001<code>vkmark<\/code> \u8fd9\u7c7b\u5de5\u5177\uff0c\u7ecf\u5e38\u4f1a\u7f3a\u4e00\u4e2a\u6216\u51e0\u4e2a\u3002\u66f4\u5408\u7406\u7684\u505a\u6cd5\u662f\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5148\u68c0\u67e5\u5de5\u5177\u662f\u5426\u5b58\u5728<\/li>\n\n\n\n<li>\u80fd\u81ea\u52a8\u5b89\u88c5\u7684\u5148\u81ea\u52a8\u5b89\u88c5<\/li>\n\n\n\n<li>\u5b89\u88c5\u4e0d\u4e86\u7684\u660e\u786e\u8bb0\u5f55\u4e0b\u6765<\/li>\n\n\n\n<li>\u7ee7\u7eed\u6267\u884c\u5176\u4ed6\u53ef\u5b8c\u6210\u7684\u6d4b\u8bd5<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. \u6240\u6709\u8f93\u51fa\u843d\u5230\u540c\u4e00\u4e2a\u62a5\u544a\u6587\u4ef6<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u7edf\u4e00\u62a5\u544a\u6587\u4ef6\u7684\u597d\u5904\u975e\u5e38\u5927\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u540e\u7eed\u5206\u6790\u4e0d\u7528\u7ffb\u7ec8\u7aef\u5386\u53f2<\/li>\n\n\n\n<li>\u51fa\u9519\u65f6\u80fd\u770b\u5230\u5177\u4f53\u547d\u4ee4\u548c\u9000\u51fa\u7801<\/li>\n\n\n\n<li>\u6362\u786c\u4ef6\u3001\u6362\u9a71\u52a8\u3001\u6362\u7cfb\u7edf\u76d8\u4e4b\u540e\uff0c\u53ef\u4ee5\u76f4\u63a5\u505a\u5bf9\u6bd4<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. \u6d4b\u8bd5\u8986\u76d6\u684c\u9762\u73af\u5883\u6700\u5173\u952e\u7684\u51e0\u7c7b\u80fd\u529b<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5efa\u8bae\u81f3\u5c11\u8986\u76d6\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u7cfb\u7edf\u57fa\u7ebf<\/li>\n\n\n\n<li>\u542f\u52a8\u5206\u6790<\/li>\n\n\n\n<li>CPU<\/li>\n\n\n\n<li>\u5185\u5b58<\/li>\n\n\n\n<li>\u5b58\u50a8\u5065\u5eb7<\/li>\n\n\n\n<li>\u5b58\u50a8\u6027\u80fd<\/li>\n\n\n\n<li>\u56fe\u5f62\u6808<\/li>\n\n\n\n<li>\u957f\u65f6\u95f4 CPU \u8d1f\u8f7d<\/li>\n\n\n\n<li>\u53ef\u9009\u7f51\u7edc\u541e\u5410<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4. \u4e0d\u505a\u7834\u574f\u6027\u64cd\u4f5c<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u684c\u9762\u6027\u80fd\u68c0\u6d4b\u4e0d\u9700\u8981\u5bf9\u771f\u5b9e\u8bbe\u5907\u505a\u6e05\u76d8\u5f0f\u6d4b\u8bd5\u3002<br>\u88f8\u8bbe\u5907\u7834\u574f\u6027\u5199\u5165\u3001\u65e0\u4fdd\u62a4\u7684\u4f4e\u5c42\u7ea7\u8986\u76d6\uff0c\u4e0d\u5e94\u8be5\u9ed8\u8ba4\u8fdb\u5165\u811a\u672c\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">5. \u73af\u5883\u76f8\u5173\u7684\u4fe1\u606f\u8981\u548c\u5206\u6570\u4e00\u8d77\u4fdd\u7559<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5355\u770b\u4e00\u4e2a\u5206\u6570\u610f\u4e49\u4e0d\u5927\u3002<br>\u540c\u6837\u4e00\u6b21 <code>sysbench<\/code>\uff0c\u5982\u679c\u4e0d\u77e5\u9053\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5f53\u524d\u5185\u6838\u7248\u672c<\/li>\n\n\n\n<li>\u5f53\u524d\u56fe\u5f62\u9a71\u52a8<\/li>\n\n\n\n<li>\u5f53\u524d\u4f1a\u8bdd\u7c7b\u578b<\/li>\n\n\n\n<li>\u5f53\u524d\u7cfb\u7edf\u76d8\u662f\u54ea\u5757<\/li>\n\n\n\n<li>\u5f53\u524d\u6e29\u5ea6\u548c governor<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u90a3\u540e\u7eed\u5c31\u5f88\u96be\u89e3\u91ca\u7ed3\u679c\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e00\u4efd\u53ef\u76f4\u63a5\u6539\u9020\u7684\u901a\u7528\u811a\u672c<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e0b\u9762\u7ed9\u51fa\u4e00\u4efd\u53ef\u590d\u7528\u7684 Bash \u811a\u672c\u6a21\u677f\u3002<br>\u5b83\u7684\u601d\u8def\u662f\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u81ea\u52a8\u68c0\u6d4b\u5305\u7ba1\u7406\u5668<\/li>\n\n\n\n<li>\u68c0\u67e5\u5e76\u5b89\u88c5\u6d4b\u8bd5\u5de5\u5177<\/li>\n\n\n\n<li>\u7edf\u4e00\u8f93\u51fa\u5230\u5355\u4e2a\u6587\u672c\u62a5\u544a<\/li>\n\n\n\n<li>\u80fd\u6d4b\u7684\u5c3d\u91cf\u90fd\u6d4b<\/li>\n\n\n\n<li>\u56fe\u5f62\u6d4b\u8bd5\u5728\u6709\u56fe\u5f62\u4f1a\u8bdd\u65f6\u6267\u884c<\/li>\n\n\n\n<li>\u7f51\u7edc\u6d4b\u8bd5\u6309\u9700\u5f00\u542f<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\">#!\/usr\/bin\/env bash<br>set -uE -o pipefail# \u901a\u7528\u684c\u9762 Linux \u786c\u4ef6\u6027\u80fd\u68c0\u6d4b\u811a\u672c<br># \u76ee\u6807\uff1a<br># 1. \u68c0\u67e5\u5fc5\u8981\u5de5\u5177<br># 2. \u7f3a\u5931\u65f6\u5c1d\u8bd5\u5b89\u88c5<br># 3. \u7edf\u4e00\u751f\u6210\u6587\u672c\u62a5\u544a<br># 4. \u8986\u76d6 CPU \/ \u5185\u5b58 \/ \u5b58\u50a8 \/ \u56fe\u5f62 \/ \u542f\u52a8 \/ \u6301\u7eed\u8d1f\u8f7d<br>#<br># \u7528\u6cd5\uff1a<br>#   chmod +x .\/linux_benchmark_report.sh<br>#   sudo .\/linux_benchmark_report.sh<br>#<br># \u53ef\u9009\uff1a<br>#   REPORT_ROOT=\/path\/to\/output sudo .\/linux_benchmark_report.sh<br>#   IPERF_SERVER=192.168.1.10 sudo .\/linux_benchmark_report.sh<br>#   DISK_TEST_SIZE_GB=6 CPU_TIME_LONG=180 sudo .\/linux_benchmark_report.shREPORT_ROOT=\"${REPORT_ROOT:-.\/benchmark_reports}\"<br>RUN_STAMP=\"$(date +%F_%H%M%S)\"<br>OUTDIR=\"${REPORT_ROOT%\/}\/${RUN_STAMP}\"<br>REPORT=\"${OUTDIR}\/benchmark_report.txt\"DISK_TEST_SIZE_GB=\"${DISK_TEST_SIZE_GB:-4}\"<br>CPU_TIME_SHORT=\"${CPU_TIME_SHORT:-60}\"<br>CPU_TIME_LONG=\"${CPU_TIME_LONG:-300}\"<br>FIO_SEQ_RUNTIME=\"${FIO_SEQ_RUNTIME:-45}\"<br>FIO_MIX_RUNTIME=\"${FIO_MIX_RUNTIME:-60}\"<br>IPERF_SERVER=\"${IPERF_SERVER:-}\"TESTFILE=\"${OUTDIR}\/fio-test.bin\"<br>DD_FILE=\"${OUTDIR}\/dd-tempfile.bin\"# \u9700\u8981\u7684\u547d\u4ee4<br>REQUIRED_CMDS=(<br>  lscpu lsblk free df findmnt lspci lsusb date uname uptime who<br>  sensors smartctl hdparm sysbench fio 7z cryptsetup dmidecode inxi<br>  systemd-analyze<br>)# \u56fe\u5f62\u76f8\u5173\u547d\u4ee4<br>GUI_CMDS=(<br>  glxinfo vulkaninfo glmark2 vkmark<br>)mkdir -p \"$OUTDIR\"log() {<br>  printf '%s\\n' \"$*\" | tee -a \"$REPORT\"<br>}section() {<br>  {<br>    echo<br>    echo \"================================================================\"<br>    echo \"$1\"<br>    echo \"================================================================\"<br>  } | tee -a \"$REPORT\"<br>}run_shell() {<br>  local title=\"$1\"<br>  shift<br>  local cmd=\"$*\"<br>  {<br>    echo<br>    echo \"----- ${title} -----\"<br>    echo \"[command] ${cmd}\"<br>    bash -lc \"$cmd\"<br>    local rc=$?<br>    echo \"[exit_code] ${rc}\"<br>  } &gt;&gt; \"$REPORT\" 2&gt;&amp;1<br>}have_cmd() {<br>  command -v \"$1\" &gt;\/dev\/null 2&gt;&amp;1<br>}need_root() {<br>  if [[ ${EUID:-$(id -u)} -ne 0 ]]; then<br>    echo \"\u8bf7\u4ee5 root \u8eab\u4efd\u6267\u884c\u3002\" &gt;&amp;2<br>    exit 1<br>  fi<br>}detect_pkg_manager() {<br>  if have_cmd pacman; then<br>    echo \"pacman\"<br>  elif have_cmd apt-get; then<br>    echo \"apt\"<br>  elif have_cmd dnf; then<br>    echo \"dnf\"<br>  else<br>    echo \"unknown\"<br>  fi<br>}# \u547d\u4ee4\u5230\u8f6f\u4ef6\u5305\u7684\u5927\u81f4\u6620\u5c04<br># \u4e0d\u540c\u53d1\u884c\u7248\u5305\u540d\u53ef\u80fd\u7565\u6709\u5dee\u5f02\uff0c\u5fc5\u8981\u65f6\u53ef\u6309\u5b9e\u9645\u73af\u5883\u8c03\u6574<br>pkg_for_cmd() {<br>  local mgr=\"$1\"<br>  local cmd=\"$2\"  case \"$mgr:$cmd\" in<br>    pacman:lspci) echo \"pciutils\" ;;<br>    pacman:lsusb) echo \"usbutils\" ;;<br>    pacman:sensors) echo \"lm_sensors\" ;;<br>    pacman:smartctl) echo \"smartmontools\" ;;<br>    pacman:hdparm) echo \"hdparm\" ;;<br>    pacman:sysbench) echo \"sysbench\" ;;<br>    pacman:fio) echo \"fio\" ;;<br>    pacman:7z) echo \"7zip\" ;;<br>    pacman:cryptsetup) echo \"cryptsetup\" ;;<br>    pacman:dmidecode) echo \"dmidecode\" ;;<br>    pacman:inxi) echo \"inxi\" ;;<br>    pacman:glxinfo) echo \"mesa-utils\" ;;<br>    pacman:vulkaninfo) echo \"vulkan-tools\" ;;<br>    pacman:glmark2) echo \"glmark2\" ;;<br>    pacman:vkmark) echo \"vkmark\" ;;    apt:lspci) echo \"pciutils\" ;;<br>    apt:lsusb) echo \"usbutils\" ;;<br>    apt:sensors) echo \"lm-sensors\" ;;<br>    apt:smartctl) echo \"smartmontools\" ;;<br>    apt:hdparm) echo \"hdparm\" ;;<br>    apt:sysbench) echo \"sysbench\" ;;<br>    apt:fio) echo \"fio\" ;;<br>    apt:7z) echo \"p7zip-full\" ;;<br>    apt:cryptsetup) echo \"cryptsetup\" ;;<br>    apt:dmidecode) echo \"dmidecode\" ;;<br>    apt:inxi) echo \"inxi\" ;;<br>    apt:glxinfo) echo \"mesa-utils\" ;;<br>    apt:vulkaninfo) echo \"vulkan-tools\" ;;<br>    apt:glmark2) echo \"glmark2\" ;;<br>    apt:vkmark) echo \"vkmark\" ;;    dnf:lspci) echo \"pciutils\" ;;<br>    dnf:lsusb) echo \"usbutils\" ;;<br>    dnf:sensors) echo \"lm_sensors\" ;;<br>    dnf:smartctl) echo \"smartmontools\" ;;<br>    dnf:hdparm) echo \"hdparm\" ;;<br>    dnf:sysbench) echo \"sysbench\" ;;<br>    dnf:fio) echo \"fio\" ;;<br>    dnf:7z) echo \"p7zip\" ;;<br>    dnf:cryptsetup) echo \"cryptsetup\" ;;<br>    dnf:dmidecode) echo \"dmidecode\" ;;<br>    dnf:inxi) echo \"inxi\" ;;<br>    dnf:glxinfo) echo \"mesa-demos\" ;;<br>    dnf:vulkaninfo) echo \"vulkan-tools\" ;;<br>    dnf:glmark2) echo \"glmark2\" ;;<br>    dnf:vkmark) echo \"vkmark\" ;;<br>    *)<br>      echo \"\"<br>      ;;<br>  esac<br>}install_packages() {<br>  local mgr=\"$1\"<br>  shift<br>  local pkgs=(\"$@\")  case \"$mgr\" in<br>    pacman)<br>      pacman -S --needed --noconfirm \"${pkgs[@]}\"<br>      ;;<br>    apt)<br>      apt-get update &amp;&amp; apt-get install -y \"${pkgs[@]}\"<br>      ;;<br>    dnf)<br>      dnf install -y \"${pkgs[@]}\"<br>      ;;<br>    *)<br>      return 1<br>      ;;<br>  esac<br>}check_and_install_tools() {<br>  section \"Tool check\"  local mgr<br>  mgr=\"$(detect_pkg_manager)\"<br>  log \"Detected package manager: ${mgr}\"  local missing_cmds=()<br>  local missing_pkgs=()<br>  local cmd pkg  for cmd in \"${REQUIRED_CMDS[@]}\"; do<br>    if ! have_cmd \"$cmd\"; then<br>      missing_cmds+=(\"$cmd\")<br>      pkg=\"$(pkg_for_cmd \"$mgr\" \"$cmd\")\"<br>      [[ -n \"$pkg\" ]] &amp;&amp; missing_pkgs+=(\"$pkg\")<br>    fi<br>  done  # \u56fe\u5f62\u547d\u4ee4\u6309\u53ef\u9009\u5904\u7406<br>  local missing_gui_cmds=()<br>  for cmd in \"${GUI_CMDS[@]}\"; do<br>    if ! have_cmd \"$cmd\"; then<br>      missing_gui_cmds+=(\"$cmd\")<br>      pkg=\"$(pkg_for_cmd \"$mgr\" \"$cmd\")\"<br>      [[ -n \"$pkg\" ]] &amp;&amp; missing_pkgs+=(\"$pkg\")<br>    fi<br>  done  if ((${#missing_cmds[@]} == 0 &amp;&amp; ${#missing_gui_cmds[@]} == 0)); then<br>    log \"All required tools are already present.\"<br>    return 0<br>  fi  log \"Missing core commands: ${missing_cmds[*]:-none}\"<br>  log \"Missing GUI commands: ${missing_gui_cmds[*]:-none}\"  # \u53bb\u91cd<br>  mapfile -t missing_pkgs &lt; &lt;(printf '%s\\n' \"${missing_pkgs[@]}\" | awk 'NF &amp;&amp; !seen[$0]++')  if ((${#missing_pkgs[@]} == 0)); then<br>    log \"No installable package mapping found for missing commands. Continue with partial testing.\"<br>    return 0<br>  fi  log \"Attempting to install packages: ${missing_pkgs[*]}\"<br>  if install_packages \"$mgr\" \"${missing_pkgs[@]}\" &gt;&gt; \"$REPORT\" 2&gt;&amp;1; then<br>    log \"Package installation completed.\"<br>  else<br>    log \"Automatic installation failed. Continue with available tools only.\"<br>  fi<br>}print_header() {<br>  : &gt; \"$REPORT\"<br>  section \"Linux desktop benchmark report\"<br>  log \"Generated at: $(date --iso-8601=seconds)\"<br>  log \"Output directory: ${OUTDIR}\"<br>  log \"Report file: ${REPORT}\"<br>  log \"Display: ${DISPLAY:-unset}\"<br>  log \"Session type: ${XDG_SESSION_TYPE:-unknown}\"<br>  log \"Optional network test runs only if IPERF_SERVER is set.\"<br>  log \"Destructive raw-device write tests are intentionally excluded.\"<br>}get_memtest_total() {<br>  local mem_mib<br>  mem_mib=\"$(awk '\/MemTotal\/ {printf \"%d\", $2\/1024}' \/proc\/meminfo)\"<br>  local target_mib=$((mem_mib \/ 2))<br>  ((target_mib &gt; 8192)) &amp;&amp; target_mib=8192<br>  ((target_mib &lt; 1024)) &amp;&amp; target_mib=1024<br>  echo \"${target_mib}M\"<br>}get_disk_free_gb() {<br>  df -BG \"$OUTDIR\" | awk 'NR==2 {gsub(\/G\/, \"\", $4); print $4}'<br>}collect_basic_info() {<br>  section \"System baseline\"<br>  run_shell \"date\" \"date --iso-8601=seconds\"<br>  run_shell \"uname\" \"uname -a\"<br>  run_shell \"os-release\" \"cat \/etc\/os-release || true\"<br>  run_shell \"hostnamectl\" \"hostnamectl || true\"<br>  run_shell \"uptime\" \"uptime\"<br>  run_shell \"who\" \"who\"<br>  run_shell \"session env\" \"printf 'DISPLAY=%s\\nXDG_SESSION_TYPE=%s\\nXAUTHORITY=%s\\nXDG_RUNTIME_DIR=%s\\n' '${DISPLAY:-unset}' '${XDG_SESSION_TYPE:-unknown}' '${XAUTHORITY:-unset}' '${XDG_RUNTIME_DIR:-unset}'\"<br>  have_cmd inxi &amp;&amp; run_shell \"inxi full\" \"inxi -Fxxxz\"<br>  run_shell \"lscpu\" \"lscpu\"<br>  run_shell \"cpu governor\" \"for f in \/sys\/devices\/system\/cpu\/cpu*\/cpufreq\/scaling_governor; do [ -r \\\"\\$f\\\" ] &amp;&amp; echo \\\"\\$f: \\$(cat \\\"\\$f\\\")\\\"; done\"<br>  run_shell \"meminfo\" \"free -h &amp;&amp; echo &amp;&amp; cat \/proc\/meminfo\"<br>  run_shell \"lsblk\" \"lsblk -o NAME,SIZE,MODEL,ROTA,TYPE,FSTYPE,MOUNTPOINTS\"<br>  run_shell \"df\" \"df -hT\"<br>  run_shell \"lspci -k\" \"lspci -k\"<br>  run_shell \"lsusb\" \"lsusb\"<br>  have_cmd dmidecode &amp;&amp; run_shell \"dmidecode summary\" \"dmidecode -t system -t baseboard -t bios -t memory\"<br>  have_cmd sensors &amp;&amp; run_shell \"sensors\" \"sensors\"<br>  run_shell \"root mount source\" \"findmnt -no SOURCE \/ || true\"<br>  have_cmd glxinfo &amp;&amp; run_shell \"glxinfo -B\" \"glxinfo -B\"<br>  have_cmd vulkaninfo &amp;&amp; run_shell \"vulkaninfo --summary\" \"vulkaninfo --summary\"<br>}collect_storage_health() {<br>  section \"Storage health\"<br>  local disk<br>  shopt -s nullglob<br>  for disk in \/dev\/nvme*n1 \/dev\/sd? \/dev\/vd?; do<br>    [[ -b \"$disk\" ]] || continue<br>    have_cmd smartctl &amp;&amp; run_shell \"smartctl ${disk}\" \"smartctl -x '${disk}'\"<br>    have_cmd hdparm &amp;&amp; run_shell \"hdparm ${disk}\" \"hdparm -Tt '${disk}'\"<br>  done<br>  shopt -u nullglob<br>}collect_boot_info() {<br>  section \"Boot analysis\"<br>  have_cmd systemd-analyze &amp;&amp; run_shell \"systemd-analyze\" \"systemd-analyze\"<br>  have_cmd systemd-analyze &amp;&amp; run_shell \"systemd-analyze blame\" \"systemd-analyze blame\"<br>  have_cmd systemd-analyze &amp;&amp; run_shell \"systemd-analyze critical-chain\" \"systemd-analyze critical-chain\"<br>}run_cpu_benchmarks() {<br>  section \"CPU benchmarks\"<br>  have_cmd 7z &amp;&amp; run_shell \"7z benchmark\" \"timeout 300 7z b\"<br>  have_cmd sysbench &amp;&amp; run_shell \"sysbench cpu single-thread\" \"sysbench cpu --threads=1 --time=${CPU_TIME_SHORT} run\"<br>  have_cmd sysbench &amp;&amp; run_shell \"sysbench cpu all-threads\" \"sysbench cpu --threads=\\$(nproc) --time=${CPU_TIME_SHORT} run\"<br>  have_cmd cryptsetup &amp;&amp; run_shell \"cryptsetup benchmark\" \"cryptsetup benchmark\"<br>}run_memory_benchmarks() {<br>  section \"Memory benchmarks\"<br>  local mem_total<br>  mem_total=\"$(get_memtest_total)\"<br>  log \"Memory benchmark working set: ${mem_total}\"<br>  have_cmd sysbench &amp;&amp; run_shell \"sysbench memory read\" \"sysbench memory --threads=\\$(nproc) --memory-oper=read --memory-total-size=${mem_total} run\"<br>  have_cmd sysbench &amp;&amp; run_shell \"sysbench memory write\" \"sysbench memory --threads=\\$(nproc) --memory-oper=write --memory-total-size=${mem_total} run\"<br>}run_disk_benchmarks() {<br>  section \"Filesystem\/storage benchmarks\"<br>  local free_gb<br>  free_gb=\"$(get_disk_free_gb)\"  log \"Benchmark directory: ${OUTDIR}\"<br>  log \"Requested disk test file size: ${DISK_TEST_SIZE_GB}G\"<br>  log \"Free space under benchmark directory: ${free_gb}G\"  if ! have_cmd fio; then<br>    log \"fio not found. Skip fio tests.\"<br>    return 0<br>  fi  if [[ -z \"${free_gb}\" ]] || (( free_gb &lt; DISK_TEST_SIZE_GB + 2 )); then<br>    log \"Not enough free space. Skip disk performance tests.\"<br>    return 0<br>  fi  run_shell \"fio sequential read\" \\<br>    \"fio --filename='${TESTFILE}' --size=${DISK_TEST_SIZE_GB}G --direct=1 --rw=read --bs=1M --ioengine=libaio --iodepth=32 --runtime=${FIO_SEQ_RUNTIME} --numjobs=1 --time_based --group_reporting --name=seq-read\"  run_shell \"fio sequential write\" \\<br>    \"fio --filename='${TESTFILE}' --size=${DISK_TEST_SIZE_GB}G --direct=1 --rw=write --bs=1M --ioengine=libaio --iodepth=32 --runtime=${FIO_SEQ_RUNTIME} --numjobs=1 --time_based --group_reporting --name=seq-write\"  run_shell \"fio 4k mixed randrw\" \\<br>    \"fio --filename='${TESTFILE}' --size=${DISK_TEST_SIZE_GB}G --direct=1 --rw=randrw --rwmixread=70 --bs=4k --ioengine=libaio --iodepth=64 --runtime=${FIO_MIX_RUNTIME} --numjobs=4 --time_based --group_reporting --name=randrw-4k\"  run_shell \"dd write\" \\<br>    \"dd if=\/dev\/zero of='${DD_FILE}' bs=1M count=2048 conv=fdatasync,notrunc status=progress\"  run_shell \"drop caches\" \\<br>    \"sync; echo 3 &gt; \/proc\/sys\/vm\/drop_caches\"  run_shell \"dd read cold\" \\<br>    \"dd if='${DD_FILE}' of=\/dev\/null bs=1M count=2048 status=progress\"  run_shell \"dd read hot\" \\<br>    \"dd if='${DD_FILE}' of=\/dev\/null bs=1M count=2048 status=progress\"<br>}run_gpu_benchmarks() {<br>  section \"GPU \/ graphics benchmarks\"  if [[ -z \"${DISPLAY:-}\" ]]; then<br>    log \"No DISPLAY detected. Skip GUI benchmarks.\"<br>    return 0<br>  fi  have_cmd glxinfo &amp;&amp; run_shell \"glxinfo -B (recheck)\" \"glxinfo -B\"<br>  have_cmd glmark2 &amp;&amp; run_shell \"glmark2\" \"timeout 300 glmark2\"<br>  have_cmd vkmark &amp;&amp; run_shell \"vkmark\" \"timeout 300 vkmark\"<br>}run_network_benchmark() {<br>  section \"Network benchmark\"<br>  if [[ -z \"${IPERF_SERVER}\" ]]; then<br>    log \"IPERF_SERVER not set. Skip iperf3 throughput test.\"<br>    return 0<br>  fi  if have_cmd iperf3; then<br>    run_shell \"iperf3\" \"iperf3 -c '${IPERF_SERVER}' -t 30 -P 4\"<br>  else<br>    log \"iperf3 not found. Skip network benchmark.\"<br>  fi<br>}run_sustained_cpu_test() {<br>  section \"Sustained CPU stability \/ thermal observation\"<br>  have_cmd sensors &amp;&amp; run_shell \"sensors before sustained CPU test\" \"sensors\"<br>  have_cmd sysbench &amp;&amp; run_shell \"sysbench cpu sustained all-threads\" \"sysbench cpu --threads=\\$(nproc) --time=${CPU_TIME_LONG} run\"<br>  have_cmd sensors &amp;&amp; run_shell \"sensors after sustained CPU test\" \"sensors\"<br>}cleanup_files() {<br>  section \"Cleanup\"<br>  run_shell \"remove temporary files\" \"rm -f '${TESTFILE}' '${DD_FILE}'\"<br>}finish_report() {<br>  section \"Finished\"<br>  log \"Completed at: $(date --iso-8601=seconds)\"<br>  log \"Report saved to: ${REPORT}\"<br>}main() {<br>  need_root<br>  print_header<br>  check_and_install_tools<br>  collect_basic_info<br>  collect_storage_health<br>  collect_boot_info<br>  run_cpu_benchmarks<br>  run_memory_benchmarks<br>  run_disk_benchmarks<br>  run_gpu_benchmarks<br>  run_network_benchmark<br>  run_sustained_cpu_test<br>  cleanup_files<br>  finish_report<br>}main \"$@\"<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u811a\u672c\u7ed3\u6784\u4e3a\u4ec0\u4e48\u8fd9\u6837\u5b89\u6392<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4efd\u811a\u672c\u7684\u91cd\u70b9\u4e0d\u662f\u201c\u547d\u4ee4\u8d8a\u591a\u8d8a\u597d\u201d\uff0c\u800c\u662f\u987a\u5e8f\u548c\u5c42\u6b21\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e00\u3001\u5148\u505a\u7cfb\u7edf\u57fa\u7ebf<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u57fa\u7ebf\u91c7\u96c6\u8d1f\u8d23\u8bb0\u5f55\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5185\u6838\u548c\u53d1\u884c\u7248\u4fe1\u606f<\/li>\n\n\n\n<li>CPU\u3001\u5185\u5b58\u3001\u5757\u8bbe\u5907\u4fe1\u606f<\/li>\n\n\n\n<li>\u5f53\u524d\u6302\u8f7d\u60c5\u51b5<\/li>\n\n\n\n<li>\u56fe\u5f62\u9a71\u52a8\u6808<\/li>\n\n\n\n<li>\u5f53\u524d\u6e29\u5ea6<\/li>\n\n\n\n<li>\u5f53\u524d\u4f1a\u8bdd\u53d8\u91cf<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e00\u6bb5\u4e0d\u76f4\u63a5\u7ed9\u51fa\u6027\u80fd\u5206\u6570\uff0c\u4f46\u5b83\u51b3\u5b9a\u4e86\u540e\u9762\u6bcf\u4e2a\u7ed3\u679c\u662f\u5426\u53ef\u89e3\u91ca\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4f8b\u5982\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>glxinfo -B<\/code> \u80fd\u5224\u65ad\u56fe\u5f62\u662f\u5426\u771f\u5728\u8d70\u786c\u4ef6\u52a0\u901f<\/li>\n\n\n\n<li><code>lsblk<\/code> \u548c <code>findmnt<\/code> \u80fd\u786e\u8ba4\u5f53\u524d\u7cfb\u7edf\u5230\u5e95\u8dd1\u5728\u54ea\u5757\u76d8\u4e0a<\/li>\n\n\n\n<li><code>sensors<\/code> \u80fd\u786e\u8ba4\u6d4b\u8bd5\u5f00\u59cb\u524d\u7684\u6e29\u5ea6\u73af\u5883<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u6ca1\u6709\u8fd9\u4e9b\u5185\u5bb9\uff0c\u540e\u9762\u7684\u7ed3\u679c\u5c31\u5bb9\u6613\u65ad\u7ae0\u53d6\u4e49\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e8c\u3001\u628a\u542f\u52a8\u94fe\u5355\u72ec\u62c6\u51fa\u6765<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5f88\u591a\u65f6\u5019\uff0c\u684c\u9762\u7cfb\u7edf\u201c\u611f\u89c9\u4e0d\u591f\u5feb\u201d\uff0c\u5e76\u4e0d\u662f CPU \u6216\u78c1\u76d8\u672c\u8eab\u5dee\uff0c\u800c\u662f\u542f\u52a8\u94fe\u91cc\u591a\u4e86\u7b49\u5f85\u670d\u52a1\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6240\u4ee5\u811a\u672c\u91cc\u5355\u72ec\u4fdd\u7559\u4e86\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>systemd-analyze<\/code><\/li>\n\n\n\n<li><code>systemd-analyze blame<\/code><\/li>\n\n\n\n<li><code>systemd-analyze critical-chain<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u51e0\u9879\u7684\u610f\u4e49\u4e0d\u5728\u8dd1\u5206\uff0c\u800c\u5728\u6392\u67e5\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u54ea\u4e9b\u670d\u52a1\u8017\u65f6\u957f<\/li>\n\n\n\n<li>\u54ea\u4e9b\u670d\u52a1\u5728\u5173\u952e\u94fe\u4e0a<\/li>\n\n\n\n<li>\u56fe\u5f62\u76ee\u6807\u4e4b\u524d\u5230\u5e95\u5361\u5728\u54ea\u4e00\u6b65<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e09\u3001CPU \u4e0d\u53ea\u770b\u4e00\u79cd\u5de5\u5177<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u811a\u672c\u540c\u65f6\u4f7f\u7528\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>7z b<\/code><\/li>\n\n\n\n<li><code>sysbench cpu<\/code><\/li>\n\n\n\n<li><code>cryptsetup benchmark<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u4e48\u642d\u914d\u6709\u51e0\u4e2a\u597d\u5904\uff1a<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><code>7z b<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u66f4\u76f4\u89c2\uff0c\u9002\u5408\u5feb\u901f\u611f\u53d7 CPU \u4e0e\u5185\u5b58\u914d\u5408\u4e0b\u7684\u538b\u7f29\/\u89e3\u538b\u80fd\u529b\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><code>sysbench cpu<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u66f4\u89c4\u6574\uff0c\u9002\u5408\u524d\u540e\u5bf9\u6bd4\u3002<br>\u5c24\u5176\u662f\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5355\u7ebf\u7a0b<\/li>\n\n\n\n<li>\u5168\u7ebf\u7a0b<\/li>\n\n\n\n<li>\u6301\u7eed 300 \u79d2<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e09\u6bb5\u7ed3\u5408\u8d77\u6765\uff0c\u57fa\u672c\u5c31\u80fd\u5224\u65ad\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5355\u6838\u6b63\u5e38\u4e0d\u6b63\u5e38<\/li>\n\n\n\n<li>\u591a\u6838\u6269\u5c55\u662f\u5426\u5408\u7406<\/li>\n\n\n\n<li>\u957f\u65f6\u95f4\u6ee1\u8f7d\u4f1a\u4e0d\u4f1a\u660e\u663e\u6389\u901f<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><code>cryptsetup benchmark<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u987a\u624b\u8865\u5145\u52a0\u5bc6\u7b97\u6cd5\u541e\u5410\u3002<br>\u5bf9\u4e8e\u52a0\u5bc6\u5377\u3001\u5907\u4efd\u538b\u7f29\u3001\u67d0\u4e9b\u6821\u9a8c\u578b\u4efb\u52a1\uff0c\u8fd9\u90e8\u5206\u4e5f\u6709\u53c2\u8003\u4ef7\u503c\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u56db\u3001\u5185\u5b58\u6d4b\u8bd5\u4e0d\u9700\u8981\u590d\u6742\uff0c\u4f46\u8981\u7a33\u5b9a<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u811a\u672c\u91cc\u5185\u5b58\u90e8\u5206\u53ea\u4fdd\u7559\u4e86 <code>sysbench memory<\/code> \u7684\u8bfb\u5199\u6d4b\u8bd5\u3002<br>\u539f\u56e0\u5f88\u7b80\u5355\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u8db3\u591f\u8f7b\u91cf<\/li>\n\n\n\n<li>\u6613\u4e8e\u81ea\u52a8\u5316<\/li>\n\n\n\n<li>\u65b9\u4fbf\u524d\u540e\u5bf9\u6bd4<\/li>\n\n\n\n<li>\u5bf9\u684c\u9762\u73af\u5883\u6765\u8bf4\u5df2\u7ecf\u591f\u7528<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u91cc\u4e0d\u8ffd\u6c42\u5b66\u672f\u7ea7\u5185\u5b58\u5e26\u5bbd\u5206\u6790\uff0c\u800c\u662f\u8ffd\u6c42\u7a33\u5b9a\u3001\u7edf\u4e00\u3001\u53ef\u91cd\u590d\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e94\u3001\u5b58\u50a8\u90e8\u5206\u4e3a\u4ec0\u4e48\u62c6\u6210\u56db\u5c42<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b58\u50a8\u6700\u5bb9\u6613\u51fa\u73b0\u201c\u53ea\u770b\u901f\u5ea6\uff0c\u4e0d\u770b\u5065\u5eb7\u201d\u7684\u95ee\u9898\u3002<br>\u6240\u4ee5\u811a\u672c\u91cc\u628a\u5b58\u50a8\u62c6\u6210\u56db\u5c42\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. <code>smartctl<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8d1f\u8d23\u770b\u5065\u5eb7\u72b6\u6001\u3002<br>\u4e3b\u8981\u5173\u6ce8\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u91cd\u6620\u5c04<\/li>\n\n\n\n<li>\u5f85\u5904\u7406\u6247\u533a<\/li>\n\n\n\n<li>\u4e0d\u53ef\u6062\u590d\u9519\u8bef<\/li>\n\n\n\n<li>\u5386\u53f2\u9519\u8bef\u65e5\u5fd7<\/li>\n\n\n\n<li>\u6e29\u5ea6\u4e0e\u5f02\u5e38\u65ad\u7535<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. <code>hdparm<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u9002\u5408\u5feb\u901f\u626b\u987a\u5e8f\u8bfb\u53d6\u662f\u5426\u79bb\u8c31\u3002<br>\u4f46\u53ea\u9002\u5408\u521d\u7b5b\uff0c\u4e0d\u9002\u5408\u5355\u72ec\u4e0b\u6700\u7ec8\u7ed3\u8bba\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. <code>fio<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u662f\u5b58\u50a8\u6027\u80fd\u6d4b\u8bd5\u7684\u6838\u5fc3\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u811a\u672c\u91cc\u5206\u6210\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u987a\u5e8f\u8bfb<\/li>\n\n\n\n<li>\u987a\u5e8f\u5199<\/li>\n\n\n\n<li>4K \u6df7\u5408\u968f\u673a\u8bfb\u5199<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6837\u53ef\u4ee5\u540c\u65f6\u89c2\u5bdf\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5927\u6587\u4ef6\u541e\u5410<\/li>\n\n\n\n<li>\u6301\u7eed\u5199\u5165\u80fd\u529b<\/li>\n\n\n\n<li>\u5c0f\u5757\u968f\u673a\u8d1f\u8f7d\u4e0b\u7684\u771f\u5b9e\u8868\u73b0<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4. <code>dd<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>dd<\/code> \u4e0d\u662f\u4e3a\u4e86\u4ee3\u66ff <code>fio<\/code>\uff0c\u800c\u662f\u8865\u5145\u51b7\u70ed\u8bfb\u5199\u5dee\u5f02\u3002<br>\u5c24\u5176\u662f\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u51b7\u8bfb\u66f4\u63a5\u8fd1\u76d8\u672c\u4f53<\/li>\n\n\n\n<li>\u70ed\u8bfb\u66f4\u63a5\u8fd1\u7f13\u5b58\u547d\u4e2d<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u5728\u89e3\u91ca\u201c\u660e\u660e\u7b2c\u4e00\u6b21\u6162\u3001\u7b2c\u4e8c\u6b21\u5feb\u5f88\u591a\u201d\u7684\u73b0\u8c61\u65f6\u975e\u5e38\u6709\u7528\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u516d\u3001\u56fe\u5f62\u6d4b\u8bd5\u91cd\u70b9\u4e0d\u662f\u6392\u884c\u699c\uff0c\u800c\u662f\u9a71\u52a8\u94fe\u662f\u5426\u6b63\u5e38<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u684c\u9762 Linux \u7684\u56fe\u5f62\u6d4b\u8bd5\uff0c\u6700\u91cd\u8981\u7684\u4e0d\u662f\u201c\u5206\u6570\u7edd\u5bf9\u503c\u201d\uff0c\u800c\u662f\u5148\u786e\u8ba4\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6ca1\u6709\u843d\u5230\u8f6f\u4ef6\u6e32\u67d3<\/li>\n\n\n\n<li>OpenGL \u6b63\u5e38<\/li>\n\n\n\n<li>Vulkan \u6b63\u5e38<\/li>\n\n\n\n<li>\u57fa\u7840\u56fe\u5f62\u6808\u6ca1\u6709\u65ad<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u6240\u4ee5\u811a\u672c\u91cc\u5148\u7528\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>glxinfo -B<\/code><\/li>\n\n\n\n<li><code>vulkaninfo --summary<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u518d\u7528\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>glmark2<\/code><\/li>\n\n\n\n<li><code>vkmark<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u56db\u9879\u7ec4\u5408\u8d77\u6765\uff0c\u57fa\u672c\u8db3\u591f\u786e\u8ba4\u684c\u9762\u56fe\u5f62\u73af\u5883\u662f\u5426\u5065\u5eb7\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u53ea\u662f\u6d4f\u89c8\u5668\u3001\u89c6\u9891\u3001\u7a97\u53e3\u52a8\u753b\u3001\u5e38\u89c4\u56fe\u5f62\u5e94\u7528\uff0c\u90a3\u4e48\u8fd9\u7c7b\u68c0\u6d4b\u5df2\u7ecf\u8db3\u591f\u56de\u7b54\u201c\u663e\u5361\u548c\u9a71\u52a8\u662f\u4e0d\u662f\u6b63\u5e38\u5de5\u4f5c\u201d\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e03\u3001\u6301\u7eed CPU \u6d4b\u8bd5\u662f\u5fc5\u8981\u9879<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u77ed\u6d4b\u53ea\u56de\u7b54\u201c\u77ac\u65f6\u6027\u80fd\u9ad8\u4e0d\u9ad8\u201d\u3002<br>\u6301\u7eed\u6d4b\u8bd5\u624d\u56de\u7b54\u201c\u80fd\u4e0d\u80fd\u7a33\u4f4f\u201d\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u6240\u4ee5\u811a\u672c\u6700\u540e\u5355\u72ec\u4fdd\u7559\u4e86\u4e00\u6b21\u5168\u7ebf\u7a0b\u6301\u7eed CPU \u6d4b\u8bd5\uff0c\u5e76\u5728\u524d\u540e\u5404\u91c7\u4e00\u4efd\u4f20\u611f\u5668\u6570\u636e\u3002<br>\u540e\u7eed\u5206\u6790\u65f6\uff0c\u53ef\u4ee5\u76f4\u63a5\u89c2\u5bdf\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u6d4b\u8bd5\u524d\u6e29\u5ea6<\/li>\n\n\n\n<li>\u957f\u65f6\u95f4\u6ee1\u8f7d\u540e\u6e29\u5ea6<\/li>\n\n\n\n<li>\u6301\u7eed\u8d1f\u8f7d\u6027\u80fd\u662f\u5426\u660e\u663e\u56de\u843d<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u5bf9\u4e8e\u65e5\u5e38\u4f7f\u7528\u6765\u8bf4\uff0c\u8fd9\u6bd4\u53ea\u770b\u4e00\u4e2a 60 \u79d2\u5206\u6570\u66f4\u6709\u610f\u4e49\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u811a\u672c\u6267\u884c\u65b9\u5f0f<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u6700\u57fa\u672c\u7684\u6267\u884c\u65b9\u6cd5\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">chmod +x .\/linux_benchmark_report.sh<br>sudo .\/linux_benchmark_report.sh<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u9700\u8981\u6d4b\u5c40\u57df\u7f51\u541e\u5410\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">IPERF_SERVER=192.168.1.10 sudo .\/linux_benchmark_report.sh<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u9700\u8981\u8c03\u5927\u78c1\u76d8\u6d4b\u8bd5\u6587\u4ef6\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">DISK_TEST_SIZE_GB=6 sudo .\/linux_benchmark_report.sh<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u9700\u8981\u5355\u72ec\u6307\u5b9a\u62a5\u544a\u76ee\u5f55\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">REPORT_ROOT=\/path\/to\/reports sudo .\/linux_benchmark_report.sh<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u62a5\u544a\u5e94\u8be5\u600e\u4e48\u8bfb<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u62a5\u544a\u751f\u6210\u4e4b\u540e\uff0c\u4e0d\u5efa\u8bae\u76f4\u63a5\u7ffb\u5230\u67d0\u4e2a\u5206\u6570\u770b\u4e00\u773c\u5c31\u7ed3\u675f\u3002<br>\u66f4\u5408\u7406\u7684\u987a\u5e8f\u662f\uff1a<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u5148\u770b\u7cfb\u7edf\u57fa\u7ebf<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u786e\u8ba4\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u5f53\u524d\u7cfb\u7edf\u76d8\u662f\u8c01<\/li>\n\n\n\n<li>\u5f53\u524d\u4f1a\u8bdd\u548c\u56fe\u5f62\u53d8\u91cf\u662f\u5426\u6b63\u5e38<\/li>\n\n\n\n<li>\u5f53\u524d\u9a71\u52a8\u662f\u5426\u6b63\u786e<\/li>\n\n\n\n<li>\u5f53\u524d\u6e29\u5ea6\u662f\u5426\u5df2\u7ecf\u5f88\u9ad8<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u518d\u770b\u542f\u52a8\u5206\u6790<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5982\u679c\u4e3b\u89c2\u611f\u89c9\u201c\u8fdb\u684c\u9762\u6162\u201d\uff0c\u5148\u6392\u9664\u662f\u4e0d\u662f\u670d\u52a1\u7b49\u5f85\u94fe\u7684\u95ee\u9898\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u7136\u540e\u770b CPU\u3001\u5185\u5b58\u3001\u56fe\u5f62<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u90e8\u5206\u51b3\u5b9a\u4e3b\u7cfb\u7edf\u7684\u6838\u5fc3\u6027\u80fd\u662f\u5426\u6b63\u5e38\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u6700\u540e\u770b\u5b58\u50a8\u5065\u5eb7\u4e0e\u5b58\u50a8\u6027\u80fd<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b58\u50a8\u65e2\u8981\u770b\u5065\u5eb7\uff0c\u4e5f\u8981\u770b\u901f\u5ea6\u3002<br>\u53ea\u770b\u5176\u4e2d\u4e00\u9879\uff0c\u5f88\u5bb9\u6613\u8bef\u5224\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u8fd9\u79cd\u811a\u672c\u771f\u6b63\u7684\u4ef7\u503c<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u7c7b\u811a\u672c\u771f\u6b63\u6709\u4ef7\u503c\u7684\u5730\u65b9\uff0c\u4e0d\u662f\u201c\u4eca\u5929\u6d4b\u4e00\u6b21\u201d\uff0c\u800c\u662f\u4ee5\u540e\u8fd8\u80fd\u7ee7\u7eed\u7528\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u5b83\u7279\u522b\u9002\u5408\u4e0b\u9762\u8fd9\u4e9b\u573a\u666f\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u66f4\u6362\u7cfb\u7edf\u76d8\u4e4b\u540e\u590d\u6d4b<\/li>\n\n\n\n<li>\u66f4\u6362\u663e\u5361\u9a71\u52a8\u4e4b\u540e\u590d\u6d4b<\/li>\n\n\n\n<li>\u5347\u7ea7\u5185\u6838\u4e4b\u540e\u590d\u6d4b<\/li>\n\n\n\n<li>\u66f4\u6362\u786c\u4ef6\u4e4b\u540e\u590d\u6d4b<\/li>\n\n\n\n<li>\u684c\u9762\u73af\u5883\u5927\u6539\u52a8\u4e4b\u540e\u505a\u7559\u6863<\/li>\n\n\n\n<li>\u628a\u4e00\u53f0\u673a\u5668\u4e0a\u7684\u68c0\u6d4b\u6d41\u7a0b\u590d\u5236\u5230\u53e6\u4e00\u53f0\u673a\u5668\u4e0a<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u672c\u8d28\u4e0a\uff0c\u4fdd\u5b58\u4e0b\u6765\u7684\u4e0d\u662f\u201c\u67d0\u6b21\u8dd1\u5206\u201d\uff0c\u800c\u662f\u4e00\u5957\u80fd\u53cd\u590d\u4f7f\u7528\u7684\u8bca\u65ad\u65b9\u6cd5\u3002<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">\u7ed3\u8bed<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u684c\u9762\u7cfb\u7edf\u6027\u80fd\u68c0\u6d4b\u6700\u7a33\u59a5\u7684\u505a\u6cd5\uff0c\u4e0d\u662f\u4e34\u65f6\u8bb0\u4f4f\u51e0\u6761\u547d\u4ee4\uff0c\u800c\u662f\u628a\u6574\u5957\u6d41\u7a0b\u5199\u6210\u811a\u672c\u3002<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u4e00\u4efd\u5408\u683c\u7684\u811a\u672c\u81f3\u5c11\u5e94\u8be5\u505a\u5230\uff1a<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u7f3a\u5931\u5de5\u5177\u5148\u68c0\u67e5<\/li>\n\n\n\n<li>\u80fd\u81ea\u52a8\u5b89\u88c5\u7684\u5c3d\u91cf\u81ea\u52a8\u5b89\u88c5<\/li>\n\n\n\n<li>\u6240\u6709\u7ed3\u679c\u7edf\u4e00\u8f93\u51fa<\/li>\n\n\n\n<li>\u540c\u65f6\u8986\u76d6\u57fa\u7ebf\u3001\u542f\u52a8\u3001CPU\u3001\u5185\u5b58\u3001\u5b58\u50a8\u3001\u56fe\u5f62\u548c\u6301\u7eed\u8d1f\u8f7d<\/li>\n\n\n\n<li>\u4e0d\u505a\u7834\u574f\u6027\u6d4b\u8bd5<\/li>\n\n\n\n<li>\u65b9\u4fbf\u4e0b\u4e00\u6b21\u7ee7\u7eed\u590d\u7528<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u8fd9\u6837\u5f97\u5230\u7684\u5c31\u4e0d\u53ea\u662f\u4e00\u6b21\u6d4b\u8bd5\u7ed3\u679c\uff0c\u800c\u662f\u4e00\u5957\u957f\u671f\u53ef\u8fc1\u79fb\u7684\u684c\u9762\u6027\u80fd\u68c0\u6d4b\u65b9\u6848\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u80cc\u666f \u684c\u9762\u7cfb\u7edf\u7684\u6027\u80fd\u68c0\u67e5\uff0c\u6700\u6015\u4e24\u4ef6\u4e8b\uff1a \u7b2c\u4e00\uff0c\u6d4b\u8bd5\u547d\u4ee4\u6563\u843d\u5728\u5386\u53f2\u8bb0\u5f55\u91cc\uff0c\u4e0b\u6b21\u60f3\u590d\u6d4b\u65f6\u5df2\u7ecf\u627e\u4e0d\u5168\u3002\u7b2c\u4e8c\uff0c\u53ea\u76ef\u7740\u5355\u4e2a\u8dd1\u5206\u6570\u5b57\uff0c\u5374\u6ca1\u6709\u628a\u7cfb\u7edf\u4fe1\u606f\u3001\u5b58\u50a8\u5065\u5eb7\u3001\u542f\u52a8\u94fe\u3001\u56fe\u5f62\u6808\u548c\u6301\u7eed\u8d1f\u8f7d\u4e00\u8d77\u8bb0\u5f55\u4e0b\u6765\u3002 \u66f4\u7a33\u59a5\u7684\u505a\u6cd5\uff0c\u662f\u628a\u6574\u5957\u68c0\u67e5\u6d41\u7a0b\u5199\u6210\u811a\u672c\uff0c\u7edf\u4e00\u8f93\u51fa\u5230\u4e00\u4efd\u6587\u672c\u62a5\u544a\u91cc\u3002\u8fd9\u6837\u505a\u7684\u4ef7\u503c\u4e0d\u53ea\u662f\u201c\u6d4b\u4e00\u6b21\u201d\uff0c\u800c\u662f\u628a\u6027\u80fd\u68c0\u6d4b\u53d8\u6210\u53ef\u91cd\u590d\u3001\u53ef\u5bf9\u6bd4\u3001\u53ef\u957f\u671f\u590d\u7528\u7684\u65b9\u6cd5\u3002 \u8fd9\u7bc7\u6587\u7ae0\u6574\u7406\u7684\u662f\u4e00\u5957 \u901a\u7528\u684c\u9762 Linux \u786c\u4ef6\u6027\u80fd\u68c0\u6d4b\u811a\u672c\u65b9\u6848\u3002\u91cd\u70b9\u653e\u5728\u811a\u672c\u672c\u8eab\uff0c\u5305\u62ec\uff1a \u8fd9\u7c7b\u811a\u672c\u8981\u89e3\u51b3\u4ec0\u4e48\u95ee\u9898 \u4e00\u5957\u771f\u6b63\u6709\u7528\u7684\u68c0\u6d4b\u811a\u672c\uff0c\u81f3\u5c11\u5e94\u8be5\u56de\u7b54\u4e0b\u9762\u8fd9\u4e9b\u95ee\u9898\uff1a \u5982\u679c\u53ea\u662f\u4e34\u65f6\u8dd1\u51e0\u4e2a\u547d\u4ee4\uff0c\u5f97\u5230\u7684\u662f\u201c\u5f53\u65f6\u7684\u4e00\u4e32\u8f93\u51fa\u201d\u3002\u5982\u679c\u505a\u6210\u811a\u672c\uff0c\u5f97\u5230\u7684\u662f\u201c\u4ee5\u540e\u8fd8\u80fd\u91cd\u590d\u4f7f\u7528\u7684\u4e00\u5957\u6d41\u7a0b\u201d\u3002 \u8bbe\u8ba1\u539f\u5219 \u8fd9\u7c7b\u811a\u672c\u7684\u6838\u5fc3\u539f\u5219\u5e76\u4e0d\u590d\u6742\u3002 1. \u5148\u8865\u5de5\u5177\uff0c\u518d\u8dd1\u6d4b\u8bd5 \u811a\u672c\u4e0d\u5e94\u8be5\u5047\u8bbe\u6d4b\u8bd5\u73af\u5883\u5df2\u7ecf\u5b8c\u6574\u3002\u50cf fio\u3001sysbench\u3001smartctl\u3001glmark2\u3001vkmark \u8fd9\u7c7b\u5de5\u5177\uff0c\u7ecf\u5e38\u4f1a\u7f3a\u4e00\u4e2a\u6216\u51e0\u4e2a\u3002\u66f4\u5408\u7406\u7684\u505a\u6cd5\u662f\uff1a 2. \u6240\u6709\u8f93\u51fa\u843d\u5230\u540c\u4e00\u4e2a\u62a5\u544a\u6587\u4ef6 \u7edf\u4e00\u62a5\u544a\u6587\u4ef6\u7684\u597d\u5904\u975e\u5e38\u5927\uff1a 3. \u6d4b\u8bd5\u8986\u76d6\u684c\u9762\u73af\u5883\u6700\u5173\u952e\u7684\u51e0\u7c7b\u80fd\u529b \u5efa\u8bae\u81f3\u5c11\u8986\u76d6\uff1a 4. \u4e0d\u505a\u7834\u574f\u6027\u64cd\u4f5c \u684c\u9762\u6027\u80fd\u68c0\u6d4b\u4e0d\u9700\u8981\u5bf9\u771f\u5b9e\u8bbe\u5907\u505a\u6e05\u76d8\u5f0f\u6d4b\u8bd5\u3002\u88f8\u8bbe\u5907\u7834\u574f\u6027\u5199\u5165\u3001\u65e0\u4fdd\u62a4\u7684\u4f4e\u5c42\u7ea7\u8986\u76d6\uff0c\u4e0d\u5e94\u8be5\u9ed8\u8ba4\u8fdb\u5165\u811a\u672c\u3002 5. \u73af\u5883\u76f8\u5173\u7684\u4fe1\u606f\u8981\u548c\u5206\u6570\u4e00\u8d77\u4fdd\u7559 \u5355\u770b\u4e00\u4e2a\u5206\u6570\u610f\u4e49\u4e0d\u5927\u3002\u540c\u6837\u4e00\u6b21 sysbench\uff0c\u5982\u679c\u4e0d\u77e5\u9053\uff1a \u90a3\u540e\u7eed\u5c31\u5f88\u96be\u89e3\u91ca\u7ed3\u679c\u3002 \u4e00\u4efd\u53ef\u76f4\u63a5\u6539\u9020\u7684\u901a\u7528\u811a\u672c \u4e0b\u9762\u7ed9\u51fa\u4e00\u4efd\u53ef\u590d\u7528\u7684 Bash \u811a\u672c\u6a21\u677f\u3002\u5b83\u7684\u601d\u8def\u662f\uff1a #!\/usr\/bin\/env bashset -uE -o pipefail# \u901a\u7528\u684c\u9762 Linux \u786c\u4ef6\u6027\u80fd\u68c0\u6d4b\u811a\u672c# \u76ee\u6807\uff1a# 1. \u68c0\u67e5\u5fc5\u8981\u5de5\u5177# 2. \u7f3a\u5931\u65f6\u5c1d\u8bd5\u5b89\u88c5# 3. &hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29],"tags":[],"class_list":["post-5578","post","type-post","status-publish","format-standard","hentry","category-vuwvtm6m4vkbg"],"_links":{"self":[{"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/posts\/5578","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/comments?post=5578"}],"version-history":[{"count":1,"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/posts\/5578\/revisions"}],"predecessor-version":[{"id":5580,"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/posts\/5578\/revisions\/5580"}],"wp:attachment":[{"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/media?parent=5578"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/categories?post=5578"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eternalsphere.net\/echoes\/index.php\/wp-json\/wp\/v2\/tags?post=5578"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}