2021年6月

推动苹果公司成为万亿公司的一封邮件

2007 年,苹果的市值约为 1500 亿美元。今天,它已经超过了 2 万亿美元,主要是基于 iPhone 的成功,而 iPhone 的成功,至少部分是基于 App Store 的成功。而这一切,都始于乔布斯的一封邮件。

最初,iPhone 在每台设备上只预装了 16 个应用。乔布斯告诉开发者,如果他们想为 iPhone 创造应用,他们可以制作在 Safari 浏览器中运行的网页应用。用户立即开始想办法越狱,以便在他们的设备上安装应用。所以,苹果只能通过某种官方 SDK 使开发应用程序成为可能。乔布斯给该公司软件工程高级副总裁 Bertrand Serlet 回答到:“当然,只要我们能在 2008 年 1 月 15 日的 Macworld 上把它全部推出来。”2008 年,我们见到了苹果的 SDK 和 App Store。

无论主动还是被动,App Store 这种划时代的创举,真正开创了新的智能手机时代。

Linux 内核将一直保留前 1MB 内存

在一些特定的情况下,前 64kb 的内存会被 BIOS 破坏;在另外一些罕见情况下,前面的内存也会被 BIOS 或 EGA/VGA 帧缓冲区所破坏。因此,与其针对不同情况分别设置内存规避区域,不如将整个前 1MB 内存设置为保留。因此,在 5.13 中将永久保留前 1MB 内存而不使用。

现在真是内存富余了,可以随便将 1MB 内存保留不用了。而就在 20 多年前,那时候还是按 KB 计算着使用内存的。

Torvalds 继续反对在编译 Linux 内核时使用 -O3 优化标志

由于 GCC 的较旧版本可能会在 -O3 编译器优化级别下产生坏的代码,而且有时没有性能上的好处,Linus Torvalds 仍然反对在编译 Linux 内核时使用这种优化标志。Torvalds 总结了他目前对 -O3 的看法:“它在历史上一直有可怕的错误。它已经变好了,但‘变好’并不是一个很高的标准。”WireGuard 项目从开始就一直用 -O3 优化级别构建,也并没有看到因此而产生不良代码的情况,但由于 Torvalds 的指导意见,该项目放弃了这个选项。除了 WireGuard 之外,LZ4 和 Zstd 是仍然在用 -O3 的内核模块。

一方面很多厂商转向使用新版本的编译器非常缓慢,另外一方面一些没有那么严谨的代码也并不适合更高级别的优化。理想化的优化措施,在现实情况中往往不能采用。

可能你已经知道原计划支持 2 年的 Linux 5.10 LTS 已经延长支持到 6 年了,但是你可能不知道是谁站出来提供了支持。

支持到 2026 年的 Linux 5.10!

去年年底,Linux 内核社区发布最新长期支持版本 Linux 5.10 LTS 时,该内核只支持到 2022 年 12 月,这让很多社区成员不解,因为发布于 2016 年底的 4.9 版本都支持到 2023 年 1 月。

未延长前的 LTS 支持计划

面对疑问,Linux 内核维护者 Greg Kroah-Hartman 解释说,“我希望看到公司们将如何帮助我测试和维护该内核版本,以使支持它 6 年成为实际可能。”

前不久,我们看到了 Linux 内核社区发布的一则新消息,“在有足够多的公司加强帮助测试之后,Linux 5.10 LTS 现在将维护到 2026 年底。”

发生了什么?在偶然的一个机会,我得知了是谁为 5.10 LTS 承诺了支持。这其中有一家中国公司,这是一家将开源置于战略级高度的公司,我想,你也许已经猜到了,是华为

说实话,听到这个消息时,既有些意外也不意外。意外的是,我没想到中国开发者和 IT 企业已经在承担这样的重任了;不意外的是,毕竟华为已经是全球首屈一指的 Linux 内核贡献大厂了,就在 Linux 5.10 中,华为以提交 1434 个补丁而位列内核代码贡献第一名,同时以代码修改行数 41049 行位列第二名。

Linux 5.10 贡献排行榜,华为名列榜首

可能作为普通用户并不关心使用的是不是 Linux,更不关心使用的是什么版本和有多久的支持期,但作为一家专注于 Linux 与开源的技术社区,我深刻理解其中的含义,也更关心华为在做出这样的决定背后的考虑、付出和可持续性。于是,我和 Linux ARM64 ACPI Maintainer、openEuler Maintainer、华为工程师郭寒军约了一个访谈,现在将其中主要内容分享给诸位读者。

为 LTS 提供支持

杭州的梅雨季显得并不炎热,在一间很大的房间中,我和看起来比我年轻多了的受访者郭寒军同学进行了一段简短而精炼的对话。

郭寒军(左)接受老王(右)的专访

首先,我直奔主题问到了为什么华为会做出对 5.10 LTS 支持的承诺?从事了 Linux 内核开发十余年的郭寒军很有技术人员本色,他坦诚说,“华为将 Linux 内核用于各种各样的产品。我们在 Linux 内核上积累了很多经验,包括开发、测试和维护的能力。我们觉得可以做这些支持。”在华为内部进行了简单的讨论,讨论了需要投入的机器的资源、人的资源等等。在资源协调到位之后,“我们就公开地在邮件列表上向 Linux 内核社区与 Greg 表态说,我们愿意从公司的角度协助做维护和测试工作。”

据我所知,Linux 5.10 LTS 也将是 Debian 11 和安卓的下一个版本的内核,而在一众已经或即将采用 Linux 5.10 LTS 的软件或产品中,openEuler 发行版家族并不是最引人注目的一个,但是华为却是最主动站出来的一个。当然,在华为的表态带动之下,也有更多企业参与到了 LTS 的支持工作当中。

郭寒军还说,“其实我们提供支持的不仅仅是 Linux 5.10 LTS,而是会对目前较新的 4 个 LTS 内核都提供支持,并且会持续支持更多的 LTS 内核。”这又是一个令我意外的事情。作为一位从业互联网软件开发二十多年,眼看着 Linux 内核从一张低密度软盘即可承载的软件变成了世界上最大的软件项目,我深知要支持现在这么庞大的软件项目背后的代价有多大。其实,之所以 Greg 在一开始给 Linux 5.10 LTS 只计划了 2 年的支持期,就是因为 Linux 内核社区已经积累了 6 个 LTS 支持版本,在支持力量上有些力不从心了。目前,Linux 稳定内核的维护负责人只有两位 Greg Kroah-Hartman 和 Sasha Levin,可想而知,仅仅两人是很难照顾这么多的 LTS 内核维护工作的。

据我了解,华为对 Linux LTS 内核的测试用例已经有 8000 多项,而且还支持包括 x86\_64、ARM64 等多种架构,每个版本的测试就需要 7-8 个小时,这就需要投入大量的基础设施。

当然,我想华为在 Linux 内核方面的偌大投入,绝非是一时心血来潮,也不仅仅是技术极客们的热情奉献所致。这个支持决定不仅符合华为整体的开源战略,也给鲲鹏和 openEuler 等提供了一个坚实的底座。

内核能力对云原生社区的重要性

Linux 内核是整个系统的底座。所有的上层的技术,包括其上的一些应用软件都是构建在内核上面的。内核的稳定性、性能以及内核的后续的技术创新方向,都会对整个 Linux 生态和社区产生重要影响。这就是为什么我们要花这么多精力去保证它的稳定性,也是为什么要主动去承担 Linux LTS 支持的原因。

为了打造这样的一个底座,华为在内核方面进行了长期而卓有成效的投入,并把在内核方面的积累在 openEuler 社区开放。郭寒军认为 openEuler 在内核方面的能力主要体现在三个方面:兼容性、性能提升和创新。

从兼容性来说,这包括 CPU 架构和硬件的兼容性。除了支持 ARM64 架构的鲲鹏、飞腾处理器之外,openEuler 还可以支持 x86\_64 架构的兆芯、英特尔、AMD 等 CPU 架构,以及 RISC-V 家族。

从性能提升方面来说,openEuler 的多核并行等技术,针对调度机制、CPU 资源管控等来提升整个业务的线性度以提升性能。这些技术已经通过 openEuler 的下游发行版提供给了更多行业用户,真正使社区和行业用户受惠于软件技术带来的全新使用体验。

从创新方面来说,openEuler 内核的创新包括:

  • 第一个创新是文件系统方面的。文件系统是华为的强项之一,从可扩展只读文件系统 EROFS 到基于非易失性内存的新型文件系统,随着存储技术的发展,也需要有新型的文件系统做支撑。
  • 第二个创新是弹性软内存。这是指如何有效的利用不同速度和不同容量的存储系统,做一些分级控制,既能使用到大容量的存储,而又不降低性能。
  • 第三个是目前正在重点打造的云原生内核。在云原生内核方面,业界已经有了一些探索,而华为可以结合其硬件能力做全栈的云原生支持,从进程的调度,到内存、网络以及存储,再到最底层的硬件,提供一个 QoS 控制来支持高优先级任务。

openEuler 对 Linux 生态的意义

自 2019 年 12月 31 日 openEuler 开源以来,已有 70多家企业、机构和组织加入了 openEuler 社区,4700 多位社区开发者,成立了 83个 SIG,并有 8 家合作伙伴推出基于 openEuler 的商业发行版,在金融、政府、运营商和电力等各行业得到了广泛商用。而在去年,openEuler 社区理事会正式成立、技术委员会升级;今年,又新成立了用户委员会和品牌宣传委员会,社区治理逐步完善,走向“共建、共享、共治”。

对此,郭寒军认为,建立在 openEuler 下游的发行版天然会具备一些优势。华为一直坚持并倡导“上游优先”原则,积极地将其对 Linux 内核的改进推送到上游 Linux 内核主线,但是基于内核社区的运作机制,这个过程必然是较为漫长和复杂的。因此,openEuler 开源社区拥有的强大的 Linux 内核能力,对 openEuler 及下游的发行版来说,可以更快的响应一些特定的功能需求和硬件支持。这对于国内的一些硬件厂商来说尤为重要,可以统合更多的力量而做到更广泛的支持。

结语

作为一家迅速崛起的 Linux 生态开源社区,openEuler 所取得的进展令人侧目。一两年间,openEuler 及其背后的华为、麒麟、统信、联通数科、中科院软件所等一批企业,已经在整个 Linux 生态、云原生领域取得了长足发展。而在企业战略级的支持下, openEuler 社区所回哺给 Linux 社区的也足以令人赞叹,这让我对开源、对中国开源的未来有更多信心。

这是一份初学者指南,展示了在基于 Ubuntu 的 Linux 发行版上设置 XRDP 所需要遵循的步骤。有了它,你就可以从不同的电脑上访问你的 Ubuntu 系统,并以图形方式使用它。

微软的 远程桌面协议(RDP) 是一个允许从一台计算机到另一台计算机进行图形化远程桌面连接的协议。RDP 的工作原理是让一台主机运行软件,允许其他几台计算机连接到它。

XRDP 是 RDP 的一个开源实现,不需要运行任何专有程序。XRDP 不仅试图遵循 RDP,而且还与常规的 RDP 客户端兼容,如 RemminaGNOME Boxes

下面是 XRDP 连接屏幕的样子。

使用 XRDP 需要注意的事项

虽然 XRDP 对于机器的远程访问非常好用,但重要的是要知道 XRDP 适合什么。

如果你需要一个安全的连接,请不要使用 XRDP

通过 XRDP 建立的连接可以被攻击者查看和修改,因此应避免任何敏感信息。这一点可以通过使用 SSH 连接或证书来缓解,但这两者都需要更复杂的设置,这里就不一一介绍了。

XRDP 在默认情况下不能很好地应用主题

在我的测试中,XRDP 默认似乎从未应用过 Ubuntu 主题。在文章的结尾处有关于解决这个问题的说明。

如果你只想/需要一个 CLI 环境,就不要使用 XRDP

XRDP 是为在 GUI 环境中使用而设计和制造的。如果你打算在 CLI 环境中使用它,比如在服务器上,你应该看看其他工具,比如 SSH。

在 Ubuntu 上安装和使用 XRDP

下面是这个远程连接设置正常工作所需的设置:

  • 一个安装了 XRDP 服务器的 Linux 系统。这是一个将被远程访问的系统。
  • 远程系统应该和你的系统在同一个网络上,或者它应该有一个 公共 IP 地址
  • 远程 Linux 系统的用户名和密码。
  • 安装有 RDP 客户端的另一个系统(无论是 Linux、macOS 还是 Windows)。

第 1 步:在远程计算机上安装 XRDP

安装 XRDP 只需几个步骤,而且是相当直接的操作。

备注:在访问任何地方之前,请注意,这里说的 “远程机器” 是其他人连接到的机器。

XRDP 包含在大多数发行版的软件库中。在 Ubuntu 上,你可以在 universe 库中找到它。

你可以用下面的命令来安装它:

sudo apt install xrdp

第 2 步:连接到远程机器

好消息是,XRDP 开箱就能使用!

要连接到你安装了 XRDP 的机器上,你首先需要在本地机器上安装一个 RDP 客户端。

我将使用 GNOME Boxes,它可以通过以下方式安装:

sudo apt install gnome-boxes

GNOME Boxes 更多的是以虚拟机使用而闻名,但它也支持其他各种协议,包括 XRDP。

如果由于某种原因你不想使用 Boxes,你也可以使用一个叫做 Remmina 的客户端。

sudo apt install remmina

不过,请注意,在本教程的其余部分,我将使用 Boxes。

首先,启动 GNOME Boxes,并点击 “+” 号,选择 “连接到远程计算机…”。

接下来,输入你要连接的机器的 IP 地址,前缀为 rdp://,然后按下图连接:

不确定你的 IP 地址是什么?

你可以用 ip address 命令找到你的 IP 地址。你需要寻找一个看起来像分成四组的数字的东西:

abhishek@its-foss:~$ ip address
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: wlp0s20f3: mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether dc:46:b9:fb:7a:c5 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.107/24 brd 192.168.0.255 scope global dynamic noprefixroute  wlp0s20f3
valid_lft 6183sec preferred_lft 6183sec

避免任何名为 127.0.0.1 的 IP 地址,因为那个地址指向你运行命令的机器。输出中应该有更多的 IP 地址,如上图所示。

然后,你应该会看到一个登录页面。将“会话”设置为 “Xorg”,只需输入你的用户名和密码,然后点击 “OK”。

之后,你应该看到远程主机的桌面:

至此,一切都会像机器在你面前时一样表现。

故障排除:修复 XRDP 连接的主题问题

在我对 Ubuntu 20.04 的测试中,默认的 Yaru 主题似乎在连接时没有应用。这可以通过一些努力来解决。

首先,在远程计算机上运行这个命令:

sudo apt install gnome-tweaks gnome-shell-extensions dconf-editor -y

接下来,打开 “扩展” 应用,并打开如下开关:

接下来,关闭你的远程桌面会话并重新登录。现在,打开 Tweaks,按照下面的截图配置:

最后,打开 dconf 编辑器,并进入 /org/gnome/shell/extensions/dash-toock/。设置如下所示的值:

  • custom-theme-shrinkOn
  • dock-fixedOn
  • transparency-modeFIXED

总结

至此,一切都准备好了,可以做你需要做的事了。

如果有什么地方做得不太对,或者你有什么问题或意见,请在下面留言。我会尽力帮助你的。


via: https://itsfoss.com/xrdp-ubuntu/

作者:Hunter Wittenborn 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

不久前,识别硬件瓶颈还需要深厚的专业知识。今天的开源 GUI 性能监视器使它变得相当简单。

 title=

计算机是一个集成的系统,它的性能取决于最慢的硬件组件。如果一个组件的能力比其他组件差,性能落后而不能跟上,它就会拖累你的整个系统。这就是一个 性能瓶颈。消除一个严重的瓶颈可以使你的系统飞起来。

本文解释了如何识别 Linux 系统中的硬件瓶颈。这些技术同时适用于个人的电脑和服务器。我强调的是个人电脑 —— 我不会涉及局域网管理或数据库系统等领域的服务器特定的瓶颈。这些通常涉及专门的工具。

我也不会多谈解决方案。这对本文来说是个太大的话题。相反,我将写一篇关于性能调整的后续文章。

我将只使用开源的图形用户界面(GUI)工具来完成这项工作。大多数关于 Linux 瓶颈的文章都相当复杂。它们使用专门的命令,并深入研究神秘的细节。

开源提供的 GUI 工具使得识别许多瓶颈变得简单。我的目标是给你一个快速、简单的方法,你可以在任何地方使用。

从哪里开始

一台计算机由六个关键的硬件资源组成。

  • 处理器
  • 内存
  • 存储器
  • USB 端口
  • 互联网连接
  • 图形处理器

如果任何一个资源表现不佳,就会产生一个性能瓶颈。为了识别瓶颈,你必须监测这六种资源。

开源提供了大量的工具来完成这项工作。我会使用 GNOME 系统监视器。它的输出很容易理解,而且你可以在大多数软件库中找到它。

启动它并点击“资源”标签。你可以马上发现许多性能问题。

 title=

图 1. 系统监控器发现问题。(Howard Fosdick, CC BY-SA 4.0)

在“资源”面板上显示三个部分:CPU 历史、内存和交换历史,以及网络历史。一眼就能看出你的处理器是否不堪负荷了,还是你的电脑没有内存了,抑或你的网络带宽被用光了。

我将在下面探讨这些问题。现在,当你的电脑速度变慢时,首先检查系统监视器。它可以立即为你提供最常见的性能问题的线索。

现在让我们来探讨一下如何识别特定方面的瓶颈。

如何识别处理器的瓶颈

要发现瓶颈,你必须首先知道你有什么硬件。开源为这个目的提供了几个工具。我喜欢 HardInfo,因为它的屏幕显示很容易阅读,而且广泛流行。

启动 HardInfo。它的“计算机->摘要”面板可以识别你的 CPU 并告诉你它的核心数、线程数和速度。它还能识别你的主板和其他计算机部件。

 title=

图 2. HardInfo 显示了硬件细节。(Howard Fosdick, CC BY-SA 4.0)

HardInfo 显示,这台计算机有一个物理 CPU 芯片。该芯片包含两个处理器(或称为核心)。每个核心支持两个线程(或称为逻辑处理器)。这就是总共四个逻辑处理器 —— 正是图 1 中系统监控器的 CPU 历史部分所显示的。

当处理器不能在其时间内对请求做出反应时,就会出现 处理器瓶颈,说明它们已经很忙了。

当系统监控器显示逻辑处理器的利用率持续在 80% 或 90% 以上时,你就可以确定这一点。这里有一个例子,四个逻辑处理器中有三个被淹没在 100% 的利用率中。这是一个瓶颈,因为它没有留下多少 CPU 用于其他工作。

 title=

图 3. 一个处理器的瓶颈。(Howard Fosdick, CC BY-SA 4.0)

哪个程序导致了这个问题?

你需要找出是哪个程序在消耗所有的 CPU。点击系统监视器的“进程”标签。然后点击“CPU 百分比”标头,根据它们消耗的 CPU 的多少对进程进行排序。你将看到哪些应用程序正在扼杀你的系统。

 title=

图 4. 识别违规的进程。(Howard Fosdick, CC BY-SA 4.0)

前三个进程各消耗了 总 CPU 资源的 24%。由于有四个逻辑处理器,这意味着每个进程消耗了一整个处理器。这就像图 3 所示。

在“进程”面板上,一个名为“analytical\_AI”的程序被确定为罪魁祸首。你可以在面板上右键单击它,以查看其资源消耗的更多细节,包括内存使用、它所打开的文件、其输入/输出细节,等等。

如果你的登录会话有管理员权限,你可以管理这个进程。你可以改变它的优先级,并停止、继续、结束或杀死它。因此,你可以在这里立即解决你的瓶颈问题。

 title=

图 5. 右键点击一个进程来管理它。(Howard Fosdick, CC BY-SA 4.0)

如何解决处理瓶颈问题?除了实时管理违规的进程外,你也可以防止瓶颈的发生。例如,你可以用另一个应用程序来代替违规进程,绕过它,改变你使用该应用程序的行为,将该应用程序安排在非工作时间,解决潜在的内存问题,对该应用程序或你的系统软件进行性能调整,或升级你的硬件。这里涉及的内容太多,所以我将在下一篇文章中探讨这些方式。

常见的处理器瓶颈

在用系统监控器监控你的 CPU 时,你会遇到几种常见的瓶颈问题。

有时一个逻辑处理器出现瓶颈,而其他所有的处理器都处于低利用率。这意味着你有一个应用程序,它的代码不够智能,无法利用一个以上的逻辑处理器,而且它已经把正在使用的那个处理器耗尽了。这个应用程序完成的时间将比使用更多的处理器要长。但另一方面,至少它能让你的其他处理器腾出手来做别的工作,而不会接管你的电脑。

你也可能看到一个逻辑处理器永远停留在 100% 的利用率。要么它非常忙,要么是一个进程被挂起了。判断它是否被挂起的方法是,是看该进程是否从不进行任何磁盘活动(正如系统监视器“进程”面板所显示的那样)。

最后,你可能会注意到,当你所有的处理器都陷入瓶颈时,你的内存也被完全利用了。内存不足的情况有时会导致处理器瓶颈。在这种情况下,你要解决的是根本的内存问题,而不是体现出症状的 CPU 问题。

如何识别内存瓶颈

鉴于现代 PC 中有大量的内存,内存瓶颈比以前要少得多。然而,如果你运行内存密集型程序,特别是当你的计算机没有很多的随机存取内存(RAM)时,你仍然可能遇到这些问题。

Linux 使用内存 既用于程序,也用于缓存磁盘数据。后者加快了磁盘数据的访问速度。Linux 可以在它需要的任何时候回收这些内存供程序使用。

系统监视器的“资源”面板显示了你的总内存和它被使用的程度。在“进程”面板上,你可以看到单个进程的内存使用情况。

下面是系统监控器“资源”面板中跟踪总内存使用的部分。

 title=

图 6. 一个内存瓶颈。(Howard Fosdick, CC BY-SA 4.0)

在“内存”的右边,你会注意到 交换空间。这是 Linux 在内存不足时使用的磁盘空间。它将内存写入磁盘以继续操作,有效地将交换空间作为你的内存的一个较慢的扩展。

你要注意的两个内存性能问题是:

  1. 内存被大量使用,而且你看到交换空间的活动频繁或不断增加。
  2. 内存和交换空间都被大量使用。

情况一意味着更慢的性能,因为交换空间总是比内存更慢。你是否认为这是一个性能问题,取决于许多因素(例如,你的交换空间有多活跃、它的速度、你的预期,等等)。我的看法是,对于现代个人电脑来说,交换空间任何超过象征性的使用都是不可接受的。

情况二是指内存和交换空间都被大量使用。这是一个 内存瓶颈。计算机变得反应迟钝。它甚至可能陷入一种“咆哮”的状态,在这种状态下,除了内存管理之外,它几乎不能完成其他任务。

上面的图 6 显示了一台只有 2GB 内存的旧电脑。当内存使用量超过 80% 时,系统开始向交换空间写入,响应速度下降了。这张截图显示了内存使用量超过了 90%,而且这台电脑已经无法使用。

解决内存问题的最终答案是要么少用内存,要么多买内存。我将在后续文章中讨论解决方案。

如何识别存储瓶颈

如今的存储有固态和机械硬盘等多个品种。设备接口包括 PCIe、SATA、雷电和 USB。无论有哪种类型的存储,你都要使用相同的程序来识别磁盘瓶颈。

从系统监视器开始。它的“进程”面板显示各个进程的输入/输出率。因此,你可以快速识别哪些进程做了最多的磁盘 I/O。

但该工具并不显示每个磁盘的总数据传输率。你需要查看特定磁盘上的总负载,以确定该磁盘是否是一个存储瓶颈。

要做到这一点,使用 atop 命令。它在大多数 Linux 软件库中都有。

只要在命令行提示符下输入 atop 即可。下面的输出显示,设备 sdb 达到 busy 101%。很明显,它已经达到了性能极限,限制了你的系统完成工作的速度。

 title=

图 7. atop 命令识别了一个磁盘瓶颈。(Howard Fosdick, CC BY-SA 4.0)

注意到其中一个 CPU 有 85% 的时间在等待磁盘完成它的工作(cpu001 w 85%)。这是典型的存储设备成为瓶颈的情况。事实上,许多人首先看 CPU 的 I/O 等待时间来发现存储瓶颈。

因此,要想轻松识别存储瓶颈,请使用 atop 命令。然后使用系统监视器上的“进程”面板来识别导致瓶颈的各个进程。

如何识别 USB 端口的瓶颈

有些人整天都在使用他们的 USB 端口。然而,他们从不检查这些端口是否被最佳地使用。无论你是插入外部磁盘、U 盘,还是其他东西,你都要确认你是否从 USB 连接的设备中获得了最大性能。

这个图表显示了原因。潜在的 USB 数据传输率差异 很大

 title=

图 8. USB 速度变化很大。(Howard Fosdick,根据 TrippliteWikipedia 提供的数字,CC BY-SA 4.0)

HardInfo 的“USB 设备”标签显示了你的计算机支持的 USB 标准。大多数计算机提供不止一种速度。你怎么知道一个特定端口的速度呢?供应商对它们进行颜色编码,如图表中所示。或者你可以在你的计算机的文档中查找。

要看到你得到的实际速度,可以使用开源的 GNOME 磁盘 程序进行测试。只要启动 GNOME 磁盘,选择它的“磁盘基准”功能,然后运行一个基准测试。这将告诉你在一个端口插入特定设备时,你将得到的最大实际速度。

你可能会得到不同的端口传输速度,这取决于你将哪个设备插入它。数据速率取决于端口和设备的特定组合。

例如,一个可以以 3.1 速度运行的设备如果使用 2.0 端口就会以 2.0 的速度运行。(而且它不会告诉你它是以较慢的速度运行的!)相反,如果你把一个 USB 2.0 设备插入 3.1 端口,它能工作,但速度是 2.0 的速度。所以要获得快速的 USB,你必须确保端口和设备都支持它。GNOME 磁盘为你提供了验证这一点的方法。

要确定 USB 的处理瓶颈,使用你对固态和硬盘所做的同样程序。运行 atop 命令来发现 USB 存储瓶颈。然后,使用系统监视器来获取违规进程的详细信息。

如何识别互联网带宽瓶颈

系统监控器的“资源”面板会实时告诉你互联网连接速度(见图 1)。

很好的 Python 工具 可以测试你的最大网速,但你也可以在 SpeedtestFast.comSpeakeasy 等网站进行测试。为了获得最佳结果,关闭所有东西,只运行 速度测试;关闭你的虚拟私有网络;在一天中的不同时间运行测试;并比较几个测试网站的结果。

然后将你的结果与你的供应商声称的下载和上传速度进行比较。这样,你就可以确认你得到的是你所付费的速度。

如果你有一个单独的路由器,在有和没有它的情况下进行测试。这可以告诉你,你的路由器是否是一个瓶颈。如果你使用 WiFi,在有 WiFi 和没有 WiFi 的情况下进行测试(通过将你的笔记本电脑直接与调制解调器连接)。我经常看到人们抱怨他们的互联网供应商,而实际上他们只是有一个 WiFi 瓶颈,可以自己解决。

如果某些程序正在消耗你的整个互联网连接,你想知道是哪一个。通过使用 nethogs 命令找到它。它在大多数软件库中都有。

有一天,我的系统监视器突然显示我的互联网访问量激增。我只是在命令行中输入了 nethogs,它立即确定带宽消耗者是 Clamav 防病毒更新。

 title=

图 9. Nethogs 识别带宽用户。(Howard Fosdick, CC BY-SA 4.0)

如何识别图形处理瓶颈

如果你把显示器插在台式电脑后面的主板上,你就在使用 板载显卡。如果你把它插在后面的卡上,你就有一个专门的图形子系统。大多数人称它为 视频卡显卡。对于台式电脑来说,附加显卡通常比主板上的显卡更强大、更昂贵。笔记本电脑总是使用板载显卡。

HardInfo 的“PCI 设备”面板告诉你关于你的图形处理单元(GPU)。它还显示你的专用视频内存的数量(寻找标有“可预取”的内存)。

 title=

图 10. HardInfo提供图形处理信息。(Howard Fosdick, CC BY-SA 4.0)

CPU 和 GPU 非常密切地 一起工作。简而言之,CPU 为 GPU 准备渲染的帧,然后 GPU 渲染这些帧。

当你的 CPU 在等待 100% 繁忙的 GPU 时,就会出现 GPU 瓶颈

为了确定这一点,你需要监控 CPU 和 GPU 的利用率。像 ConkyGlances 这样的开源监控器,如果它们的扩展插件支持你的图形芯片组,就可以做到这一点。

看一下 Conky 的这个例子。你可以看到,这个系统有很多可用的 CPU。GPU 只有 25% 的使用率。想象一下,如果这个 GPU 的数量接近 100%。那么你就会知道 CPU 在等待 GPU,你就会有一个 GPU 的瓶颈。

 title=

图 11. Conky 显示 CPU 和 GPU 的利用率。 (图片来源:AskUbuntu论坛)

在某些系统上,你需要一个供应商专属的工具来监控你的 GPU。它们可以从 GitHub 上下载,并在 GPU 监控和诊断命令行工具 这篇文章中有所描述。

总结

计算机由一系列集成的硬件资源组成。如果它们中的任何一个在工作量上远远落后于其他资源,就会产生性能瓶颈。这可能会拖累你的整个系统。你需要能够识别和纠正瓶颈,以实现最佳性能。

不久前,识别瓶颈需要深厚的专业知识。今天的开源 GUI 性能监控器使它变得相当简单。

在我的下一篇文章中,我将讨论改善你的 Linux 电脑性能的具体方法。同时,请在评论中分享你自己的经验。


via: https://opensource.com/article/21/3/linux-performance-bottlenecks

作者:Howard Fosdick 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

想在 Linux 终端中做一些有趣的事情吗?把一张普通的图片转换成 ASCII 艺术怎么样?

你知道 什么是 ASCII 么?它是一个标准,在 8 位码中的 256 个空位上分配字母、数字和其他字符。ASCII 艺术是一个由可打印的 ASCII 字符组成的图形。基本上,它是由一堆字母、数字和特殊字符组成的。

你可能见过有人 以 ASCII 格式显示他们发行版的标志,像这样:

这很酷,对吗?把一张普通的图片转换成 ASCII 艺术怎么样?这就是在这篇文章中要探讨的问题。

Ascii Image Converter

顾名思义,Ascii Image Converter 是一个将图片转换为 ASCII 艺术的工具。它是一个用 Go 语言编写的基于命令行的工具,它打印出提供给它的图片的ASCII版本。

你可能认不出我,但下面的图片中的 ASCII 版就是我。那是我的 8 位头像。

该工具支持以下格式的输入图像:

  • JPEG/JPG
  • PNG
  • BMP
  • WEBP
  • TIFF/TIF

让我们看看如何安装和使用它。

在 Linux 上安装 Ascii Image Converter

这个有趣的工具也可以在 Windows 上使用,但我不打算这么做。在本教程中,让我们坚持使用 Linux。

如果你的发行版中启用了 Snap,你可以用下面的命令轻松地安装它的 snap 包:

sudo snap install ascii-image-converter

你也可以从它的发布页面下载 Linux 的可执行文件,并把可执行文件放在 /usr/local/bin/ 目录下。这样,你就能像普通的 Linux 命令一样运行它。如果你想知道为什么会这样,请了解一下 Linux 目录层次结构

使用 Ascii Image Converter

使用很简单。安装后,你只需要提供你想转换的图像的路径。

ascii-image-converter path_to_image

你也可以提供图片的 URL,直接从网上把图片转换成 ASCII。

这是我的个人资料照片转换成 ASCII 格式。我把我的原始照片放在这里供大家参考。

你也可以转换成彩色的 ASCII。

ascii-image-converter -C path_to_image

你可以通过提供它们的路径将多个图像转换为 ASCII。它将在终端显示器上一个接一个地打印 ASCII 版本。

也有一个选项可以保存生成的 ASCII 艺术。在旧版本中,它只会被保存为文本文件,而不是图像。开发者 Zoraiz Hassan 发布了一个新版本,现在该工具默认将生成的 ASCII 图像保存为 PNG 格式。

ascii-image-converter path_to_image -s .

还有一些可用的选项,比如给输出一个特定的尺寸,使用更多的 ASCII 字符,或者使用你自己的字符集来打印 ASCII 艺术。你可以在 项目的仓库 上阅读相关内容。

喜欢它吗?

你喜欢更多的 ASCII 相关的东西吗?那么 在 Linux 上玩 ASCII 游戏 怎么样?是的,你完全可以这么做。

如果你喜欢在终端做实验,你可能会喜欢这个工具。虽然我不知道 ASCII 转换后的图像能有什么好的实际用途。有什么想法吗?


via: https://itsfoss.com/ascii-image-converter/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

萨尔瓦多可能成为第一个将比特币视为法币的国家

在美国迈阿密举行的 Bitcoin 2021 会议上,中美洲国家萨尔瓦多的总统宣布,计划立法将比特币视为法币,和美元并列。萨尔瓦多已经组建了一个由比特币领袖组成的团队,以帮助建立一个以比特币为基础层的新金融生态系统。萨尔瓦多主要使用现金,70% 的居民没有银行账号或信用卡。3 月,Strike 在萨尔瓦多推出了它的移动支付应用,并迅速成为该国下载量最大的应用。

对于没有现代金融体系的国家来说,比特币可能要比落后的金融体系更可靠,当然,也可能更危险。

用文本描述创造安卓应用

研究人员开发出一种框架,能从文本描述创造安卓应用。这项研究在人类语言和编程语言之间架起桥梁,让编程变得更容易。大部分此类的技术是基于端对端的神经网络机器翻译,类似 Google 翻译使用的技术。但绝大部分它们都无法生成包含数百行代码的应用。为了克服这一限制,研究人员创造了一种形式语言,能抓住应用代码中的复杂性。他们开发的框架被称为 Text2App,其演示发布在 GitHub 上。

这也是低代码的一种形式,其实对于很多应用来说,低代码是一种可能的开发方式。

主要浏览器开发商对浏览器插件进行标准化

苹果、Mozilla、谷歌、微软等组成了 “WebExtensions 社区小组”(WECG),试图为未来的 Web 扩展打造一个共同的架构。该组织有两个目标。通过指定一个一致的模型和功能、API 和权限的共同核心,使开发人员更容易创建扩展;以及概述一个架构,以提高性能,甚至更安全和防止滥用。该小组不希望指定 Web 扩展平台的每一个方面,也不希望扼杀创新。每个浏览器供应商将继续以他们自己的政策独立运作。

标准化带来的好处毋庸置疑,同时也宽泛地没有约束更多创新更是好事。