2015年11月

作为一个系统工程师,你经常需要生成一些显示系统资源利用率的报告,以便确保:1)正在合理利用系统,2)防止出现瓶颈,3)确保可扩展性,以及其它原因。

监视 Linux 性能活动报告

RHCE 第三部分:监视 Linux 性能活动报告

除了著名的用于检测磁盘、内存和 CPU 使用率的原生 Linux 工具 - 可以给出很多例子,红帽企业版 Linux 7 还提供了另外两个可以为你的报告更多数据的工具套装:sysstat 和 dstat。

在这篇文章中,我们会介绍两者,但首先让我们来回顾一下传统工具的使用。

原生 Linux 工具

使用 df,你可以报告磁盘空间以及文件系统的 inode 使用情况。你需要监视这两者,因为缺少磁盘空间会阻止你保存更多文件(甚至会导致系统崩溃),就像耗尽 inode 意味着你不能将文件链接到对应的数据结构,从而导致同样的结果:你不能将那些文件保存到磁盘中。

# df -h         [以人类可读形式显示输出]
# df -h --total         [生成总计]

检查 Linux 总的磁盘使用

检查 Linux 总的磁盘使用

# df -i         [显示文件系统的 inode 数目]
# df -i --total     [生成总计]

检查 Linux 总的 inode 数目

检查 Linux 总的 inode 数目

用 du,你可以估计文件、目录或文件系统的文件空间使用。

举个例子,让我们来看看 /home 目录使用了多少空间,它包括了所有用户的个人文件。第一条命令会返回整个 /home 目录当前使用的所有空间,第二条命令会显示子目录的分类列表:

# du -sch /home
# du -sch /home/*

检查 Linux 目录磁盘大小

检查 Linux 目录磁盘大小

别错过了:

另一个你工具集中不容忽视的工具就是 vmstat。它允许你查看进程、CPU 和 内存使用、磁盘活动以及其它的大概信息。

如果不带参数运行,vmstat 会返回自从上一次启动后的平均信息。尽管你可能以这种方式使用该命令有一段时间了,再看一些系统使用率的例子会有更多帮助,例如在例子中定义了时间间隔。

例如

# vmstat 5 10

会每个 5 秒返回 10 个事例:

检查 Linux 系统性能

检查 Linux 系统性能

正如你从上面图片看到的,vmstat 的输出分为很多列:proc(process)、memory、swap、io、system、和 CPU。每个字段的意义可以在 vmstat man 手册的 FIELD DESCRIPTION 部分找到。

在哪里 vmstat 可以派上用场呢?让我们在 yum 升级之前和升级时检查系统行为:

# vmstat -a 1 5

Vmstat Linux 性能监视

Vmstat Linux 性能监视

请注意当磁盘上的文件被更改时,活跃内存的数量增加,写到磁盘的块数目(bo)和属于用户进程的 CPU 时间(us)也是这样。

或者直接保存一个大文件到磁盘时(由 dsync 标志引发):

# vmstat -a 1 5
# dd if=/dev/zero of=dummy.out bs=1M count=1000 oflag=dsync

Vmstat Linux 磁盘性能监视

Vmstat Linux 磁盘性能监视

在这个例子中,我们可以看到大量的块被写入到磁盘(bo),这正如预期的那样,同时 CPU 处理任务之前等待 IO 操作完成的时间(wa)也增加了。

别错过: Vmstat – Linux 性能监视

其它 Linux 工具

正如本文介绍部分提到的,这里有其它的工具你可以用来检测系统状态和利用率(不仅红帽,其它主流发行版的官方支持库中也提供了这些工具)。

sysstat 软件包包含以下工具:

  • sar (收集、报告、或者保存系统活动信息)。
  • sadf (以多种方式显示 sar 收集的数据)。
  • mpstat (报告处理器相关的统计信息)。
  • iostat (报告 CPU 统计信息和设备以及分区的 IO统计信息)。
  • pidstat (报告 Linux 任务统计信息)。
  • nfsiostat (报告 NFS 的输出/输出统计信息)。
  • cifsiostat (报告 CIFS 统计信息)
  • sa1 (收集并保存二进制数据到系统活动每日数据文件中)。
  • sa2 (在 /var/log/sa 目录写入每日报告)。

dstat 比这些工具所提供的功能更多一些,并且提供了更多的计数器和更大的灵活性。你可以通过运行 yum info sysstat 或者 yum info dstat 找到每个工具完整的介绍,或者安装完成后分别查看每个工具的 man 手册。

安装两个软件包:

# yum update && yum install sysstat dstat

sysstat 主要的配置文件是 /etc/sysconfig/sysstat。你可以在该文件中找到下面的参数:

# How long to keep log files (in days).
# If value is greater than 28, then log files are kept in
# multiple directories, one for each month.
HISTORY=28
# Compress (using gzip or bzip2) sa and sar files older than (in days):
COMPRESSAFTER=31
# Parameters for the system activity data collector (see sadc manual page)
# which are used for the generation of log files.
SADC_OPTIONS="-S DISK"
# Compression program to use.
ZIP="bzip2"

sysstat 安装完成后,/etc/cron.d/sysstat 中会添加和启用两个 cron 任务。第一个任务每 10 分钟运行系统活动计数工具,并在 /var/log/sa/saXX 中保存报告,其中 XX 是该月的一天。

因此,/var/log/sa/sa05 会包括该月份第 5 天所有的系统活动报告。这里假设我们在上面的配置文件中对 HISTORY 变量使用默认的值:

*/10 * * * * root /usr/lib64/sa/sa1 1 1

第二个任务在每天夜间 11:53 生成每日进程计数总结并把它保存到 /var/log/sa/sarXX 文件,其中 XX 和之前例子中的含义相同:

53 23 * * * root /usr/lib64/sa/sa2 -A

例如,你可能想要输出该月份第 6 天从上午 9:30 到晚上 5:30 的系统统计信息到一个 LibreOffice Calc 或 Microsoft Excel 可以查看的 .csv 文件(这样就可以让你创建表格和图片了):

# sadf -s 09:30:00 -e 17:30:00 -dh /var/log/sa/sa06 -- | sed 's/;/,/g' > system_stats20150806.csv

你可以在上面的 sadf 命令中用 -j 标记代替 -d 以 JSON 格式输出系统统计信息,这当你在 web 应用中使用这些数据的时候非常有用。

Linux 系统统计信息

Linux 系统统计信息

最后,让我们看看 dstat 提供什么功能。请注意如果不带参数运行,dstat 默认使用 -cdngy(表示 CPU、磁盘、网络、内存页、和系统统计信息),并每秒添加一行(可以在任何时候用 Ctrl + C 中断执行):

# dstat

Linux 磁盘统计检测

Linux 磁盘统计检测

要输出统计信息到 .csv 文件,可以用 -output 标记后面跟一个文件名称。让我们来看看在 LibreOffice Calc 中该文件看起来是怎样的:

检测 Linux 统计信息输出

检测 Linux 统计信息输出

为了更多的阅读体验,我强烈建议你查看 dstatsysstat 的 pdf 格式 man 手册。你会找到其它能帮助你创建自定义的详细系统活动报告的选项。

别错过: Sysstat – Linux 的使用活动检测工具

总结

在该指南中我们解释了如何使用 Linux 原生工具以及 RHEL 7 提供的特定工具来生成系统使用报告。在某种情况下,你可能像依赖最好的朋友那样依赖这些报告。

你很可能使用过这篇指南中我们没有介绍到的其它工具。如果真是这样的话,用下面的表单和社区中的其他成员一起分享吧,也可以是任何其它的建议/疑问/或者评论。

我们期待你的回复。


via: http://www.tecmint.com/linux-performance-monitoring-and-file-system-statistics-reports/

作者:Gabriel Cánepa 译者:ictlyh 校对:wxy

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

想在屏幕上显示出你的 Linux 发行版的酷炫标志和基本硬件信息吗?不用找了,来试试超赞的 screenfetch 和 linux\_logo 工具。

Linux Logo

来看看 screenfetch 吧

screenFetch 是一个能够在截屏中显示系统/主题信息的命令行脚本。它可以在 Linux,OS X,FreeBSD 以及其它的许多类Unix系统上使用。来自 man 手册的说明:

这个方便的 Bash 脚本可以用来生成那些漂亮的终端主题信息和用 ASCII 构成的发行版标志,就像如今你在别人的截屏里看到的那样。它会自动检测你的发行版并显示 ASCII 版的发行版标志,并且在右边显示一些有价值的信息。

在 Linux 上安装 screenfetch

打开终端应用。在基于 Debian 或 Ubuntu 或 Mint 的系统上只需要输入下列 apt-get 命令

$ sudo apt-get install screenfetch

图一:用 apt-get 安装 screenfetch

如果源里面没有这个软件,可以采用如下方法:

wget https://github.com/KittyKatt/screenFetch/archive/master.zip
unzip master.zip
sudo mv screenFetch-master/screenfetch-dev /usr/bin/screenfetch

在 Mac OS X 上安装 screenfetch

输入下列命令:

$ brew install screenfetch

图二:用 brew 命令安装 screenfetch

在 FreeBSD 上安装 screenfetch

输入下列 pkg 命令:

$ sudo pkg install sysutils/screenfetch

图三:在 FreeBSD 用 pkg 安装 screenfetch

在 Fedora 上安装 screenfetch

输入下列 dnf 命令:

$ sudo dnf install screenfetch

图四:在 Fedora 22 用 dnf 安装 screenfetch

我该怎么使用 screefetch 工具?

只需输入以下命令:

$ screenfetch

这是不同系统的输出:

Fedora 上的 Screenfetch

OS X 上的 Screenfetch

FreeBSD 上的 Screenfetch

Debian 上的 Screenfetch

获取截屏

要获取截屏并保存成文件,输入:

$ screenfetch -s

你会看到一个文件 ~/Desktop/screenFetch-*.jpg。获取截屏并直接上传到 imgur,输入:

$ screenfetch -su imgur

输出示例:

                 -/+:.          veryv@Viveks-MacBook-Pro
                :++++.          OS: 64bit Mac OS X 10.10.5 14F27
               /+++/.           Kernel: x86_64 Darwin 14.5.0
       .:-::- .+/:-``.::-       Uptime: 3d 1h 36m
    .:/++++++/::::/++++++/:`    Packages: 56
  .:///////////////////////:`   Shell: bash 3.2.57
  ////////////////////////`     Resolution: 2560x1600 1920x1200
 -+++++++++++++++++++++++`      DE: Aqua
 /++++++++++++++++++++++/       WM: Quartz Compositor
 /sssssssssssssssssssssss.      WM Theme: Blue
 :ssssssssssssssssssssssss-     Font: Not Found
  osssssssssssssssssssssssso/`  CPU: Intel Core i5-4288U CPU @ 2.60GHz
  `syyyyyyyyyyyyyyyyyyyyyyyy+`  GPU: Intel Iris
   `ossssssssssssssssssssss/    RAM: 6405MB / 8192MB
     :ooooooooooooooooooo+.
      `:+oo+/:-..-:/+o+/-      

Taking shot in 3.. 2.. 1.. 0.
==>  Uploading your screenshot now...your screenshot can be viewed at http://imgur.com/HKIUznn

你可以访问 http://imgur.com/HKIUznn 来查看上传的截屏。

再来看看 linux\_logo

linux\_logo 程序生成一个彩色的 ANSI 版企鹅图片,还包含一些来自 /proc 的系统信息。

安装

只需按照你的 Linux 发行版输入对应的命令:

Debian/Ubutnu/Mint

# apt-get install linuxlogo   ### 注意名字略微不同

CentOS/RHEL/旧版 Fedora

# yum install linux_logo

Fedora Linux v22+ 或更新版本

# dnf install linux_logo

运行它

只需输入下列命令:

$ linux_logo

运行 linux\_logo

等等,还有更多!

你可以用这个命令查看内置的标志列表:

$ linux_logo -f -L list

输出示例:

Available Built-in Logos:
    Num Type    Ascii   Name        Description
    1   Classic Yes aix     AIX Logo
    2   Banner  Yes bsd_banner  FreeBSD Logo
    3   Classic Yes bsd     FreeBSD Logo
    4   Classic Yes irix        Irix Logo
    5   Banner  Yes openbsd_banner  OpenBSD Logo
    6   Classic Yes openbsd     OpenBSD Logo
    7   Banner  Yes solaris     The Default Banner Logos
    8   Banner  Yes banner      The Default Banner Logo
    9   Banner  Yes banner-simp Simplified Banner Logo
    10  Classic Yes classic     The Default Classic Logo
    11  Classic Yes classic-nodots  The Classic Logo, No Periods
    12  Classic Yes classic-simp    Classic No Dots Or Letters
    13  Classic Yes core        Core Linux Logo
    14  Banner  Yes debian_banner_2 Debian Banner 2
    15  Banner  Yes debian_banner   Debian Banner (white)
    16  Classic Yes debian      Debian Swirl Logos
    17  Classic Yes debian_old  Debian Old Penguin Logos
    18  Classic Yes gnu_linux   Classic GNU/Linux
    19  Banner  Yes mandrake    Mandrakelinux(TM) Banner
    20  Banner  Yes mandrake_banner Mandrake(TM) Linux Banner
    21  Banner  Yes mandriva    Mandriva(TM) Linux Banner
    22  Banner  Yes pld     PLD Linux banner
    23  Classic Yes raspi       An ASCII Raspberry Pi logo
    24  Banner  Yes redhat      RedHat Banner (white)
    25  Banner  Yes slackware   Slackware Logo
    26  Banner  Yes sme     SME Server Banner Logo
    27  Banner  Yes sourcemage_ban  Source Mage GNU/Linux banner
    28  Banner  Yes sourcemage  Source Mage GNU/Linux large
    29  Banner  Yes suse        SUSE Logo
    30  Banner  Yes ubuntu      Ubuntu Logo

Do "linux_logo -L num" where num is from above to get the appropriate logo.
Remember to also use -a to get ascii version.

查看 aix 的标志,输入:

$ linux_logo -f -L aix

查看 openbsd 的标志:

$ linux_logo -f -L openbsd

或者只是随机看看一些 Linux 标志:

$ linux_logo -f -L random_xy

可以像下面那样结合 bash 的循环来显示不同的标志,输入:

动图1: linux\_logo 和 bash 循环,既有趣又能发朋友圈耍酷

获取帮助

输入下列命令:

$ screefetch -h
$ linux_logo -h

参考


via: http://www.cyberciti.biz/hardware/howto-display-linux-logo-in-bash-terminal-using-screenfetch-linux_logo/

作者:Vivek Gite 译者:alim0x 校对:wxy

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

提问:我想要知道Linux系统中内核内置的模块,以及每个模块有哪些参数。有什么方法可以得到内置模块和设备驱动的列表,以及它们的详细信息呢?

现代Linux内核正在随着时间变化而迅速增长,以支持大量的硬件、文件系统和网络功能。在此期间,“可加载模块(loadable kernel modules,[LKM])”的引入防止内核变得越来越臃肿,以及在不同的环境中灵活地扩展功能及硬件支持,而不必重新构建内核。

最新的Linux发行版的内核只带了相对较小的“内置模块(built-in modules)”,其余的特定硬件驱动或者自定义功能作为“可加载模块”来让你选择地加载或卸载。

内置模块被静态地编译进了内核。不像可加载内核模块可以动态地使用modprobeinsmodrmmodmodinfo或者lsmod等命令地加载、卸载、查询模块,内置的模块总是在启动时就加载进了内核,不会被这些命令管理。

找出内置模块列表

要得到内置模块列表,运行下面的命令。

$ cat /lib/modules/$(uname -r)/modules.builtin 

你也可以用下面的命令来查看有哪些内置模块:

找出内置模块参数

每个内核模块无论是内置的还是可加载的都有一系列的参数。对于可加载模块,modinfo命令可以显示它们的参数信息。然而这个命令对内置模块没有用。你会得到下面的错误。

modinfo: ERROR: Module XXXXXX not found.

如果你想要查看内置模块的参数,以及它们的值,你可以在 /sys/module 下检查它们的内容。

在 /sys/module目录下,你可以找到内核模块(包含内置和可加载的)命名的子目录。进入每个模块目录,这里有个“parameters”目录,列出了这个模块所有的参数。

比如你要找出tcp\_cubic(内核默认的TCP实现)模块的参数。你可以这么做:

$ ls /sys/module/tcp_cubic/parameters 

接着阅读这个文件查看每个参数的值。

$ cat /sys/module/tcp_cubic/parameters/tcp_friendliness 


via: http://ask.xmodulo.com/find-information-builtin-kernel-modules-linux.html

作者:Dan Nanni 译者:geekpi 校对:wxy

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

前一段时间,我已经介绍过 Linux 上针对 C/C++ 语言的最好 IDE。很显然 C 或 C++ 并不是现存的唯一的编程语言,是时间讨论某些更加特别的语言了。

假如你做过一些统计工作,很可能你已经见识过 R 语言 了。假如你还没有,我真的非常推荐这门专为统计和数据挖掘而生的开源编程语言。若你拥有编程背景,它的语法可能会使你感到有些不适应,但希望它的向量化操作所带来的快速能够吸引到你。简而言之,请尝试使用一下这门语言。而要做到这一点,使用一个好的 IDE 来入门或许会更好。R 作为一门跨平台的语言,有着一大把好用的 IDE,它们使得用 R 语言进行数据分析变得更惬意。假如你非常钟意一个特定的编辑器,这里也有一些好用的插件来将它转变为一个成熟的 R 语言的 IDE。

下面就让我们见识一下 Linux 环境下 5 个针对 R 语言的好用 IDE吧。

1. RStudio

就让我们以或许是最为人们喜爱的 R IDE —— RStudio 来开始我们的介绍吧。除了一般 IDE 所提供的诸如语法高亮、代码补全等功能,RStudio 还因其集成了 R 语言帮助文档、强大的调试器、多视图系统而突出。如果你准备入门 R 语言,我只建议你将 RStudio 作为你的 R 语言控制台,一方面用它来实时测试代码是很完美的,另外对象浏览器可以帮助你理解你正在处理的是哪类数据。最后,真正征服我的是它集成了图形显示器,使得你能够更轻松地将图形输出为图片文件。至于它不好的方面, RStudio 缺乏快捷键和高级设置来使得它成为一个完美的 IDE。然而,它有一个以 AGPL 协议发布的免费版本, Linux 用户没有借口不去试试这个 IDE。

2. 带有 ESS 插件的 Emacs

在我的前一个有关 IDE 的文章中,很多朋友对我所给出的清单中没有 Emacs 而感到失望。对于这个,我的主要理由是 Emacs 可以说是 IDE 里面的“通配符”:你可以将它放到任意语言的 IDE 清单中。但对于 带有 ESS 插件的 R 来说,事情就变得有些不同了。Emacs Speaks Statistics (ESS) 是一个令人惊异的插件,它将完全改变你使用 Emacs 编辑器的方式,真的非常适合 R 编程者的需求。与 RStudio 类似,带有 ESS 的 Emacs 拥有多视图,它有两个面板:一个显示代码,另一个则是一个 R 控制台,使得实时地测试代码和探索数据对象变得更加容易。但 ESS 真正的长处是可以和你已安装的其他 Emacs 插件无缝集成,以及它的高级配置选项。简而言之,如果你喜欢你的 Emacs 快捷键,你将能够在 R 语言开发环境下使用它们。然而,当你在 ESS 中处理大量数据时,我已经听闻并经历了一些效率低下的问题。尽管这个问题不是很重大,但足以让我更偏好 RStudio。

3. Vim 及 Vim-R-plugin

在谈论完 Emacs 后,因为我不想去讨论 Emacs 和 Vim 的优劣,所以我尽力给予 Vim 同样的待遇,下面介绍 Vim R 插件。使用名为 tmux 的终端工具,这个工具使得在开启一个 R 控制台的同时,又书写 R 代码成为可能。但最为重要的是,它还为 Vim 带来了 R 语言的语法高亮和自动补全。你还可以轻易地获取 R 帮助文档和浏览数据对象。但再次强调,这些强大的功能来源于它大量的自定义选项和 Vim 的速度。假如你被这些功能所诱惑,我希望你能够通读有关介绍如何安装这个插件并设置相关环境的文档

4. 带有 RGedit 的 Gedit

若 Emacs 和 Vim 都不是你的菜,而你恰好喜欢默认的 Gnome 编辑器,则 RGedit 就是专门为你而生的:它是 Gedit 的一个专门编辑 R 代码的插件。Gedit 比你以为的更强大,配上大量的插件,就有可能用它来做许许多多的事情。而 RGedit 恰好就是你编辑 R 代码所需要的那款插件。它支持传统的语法高亮并在屏幕下方集成了 R 控制台,但它还有一大类独特的功能,例如多文件编辑、代码折叠、文件查看器,甚至还有一个 GUI 的向导用来从 snippets 产生代码。尽管我对 Gedit 并不感冒,但我必须承认这些功能比一般插件的功能更好,并且在你花费很长时间去分析数据时它会有很大的帮助。唯一的不足是它的最后一次更新是 2013 年。我真的希望这个项目能够被重新焕发新生。

5. RKWard

最后的并不意味着最不重要,作为这个清单的最后,RKWard 是一个 KDE 环境下的 R 语言 IDE。我最喜爱它的一点是它的名称。但说老实话,它的包管理系统和类似电子表格的数据编辑器排在我最喜欢它的理由的第二位。除了这些,它还包含一个简单的用来画图和导入数据的系统,另外它还可以使用插件来扩展功能。假如你不是一个 KDE 迷,或许你有点不喜欢这个,但若你是,我真的建议你考虑使用它。

总的来说,无论你是否刚入门 R 语言,这些 IDE 对你或许都有些帮助。假如你更偏好某个软件它自身所代表的东西或者是偏好针对你喜爱的编辑器的插件,这些都没有什么问题,我确信你将感激这些软件所提供的某些功能。同时我还确信我遗漏了很多好的针对 R 语言的 IDE,或许它们值得罗列在这个清单上。鉴于你们在上一篇针对 C/C++ 的最好 IDE 这个话题中陈述了很多非常有用的评论,我也邀请你们在这里做出同样精彩的评论并分享出你的知识。

关于 Linux 下针对 R 语言的好用编辑器,你有什么看法呢?请在下面的评论中让我们知晓。


via: http://xmodulo.com/good-ide-for-r-on-linux.html

作者:Adrien Brochard 译者:FSSlc 校对:wxy

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

GNU Hurd 是 GNU 工程中取代 Unix 的核心。 Hurd 是一组运行在 Mach 微内核上的服务器,用来实现 Unix 或其他核心(如 Linux)实现了的文件系统、网络协议、及文件访问控制等其他功能。

GNU Hurd

Hurd 内核向来因其开发缓慢而被吐槽,不过,这次的0.7版本发布居然距离上次的0.6发布才仅仅半年!看来……

GNU Hurd 0.7 于 2015/10/31 发布,主要更新内容有:

  • 改进了 ext2fs 中的节点缓存功能
  • 极大的改进了原生的 fackroot 工具,现在它可以处理命令套接字,以及修复了一些权限问题
  • 引入新的功能 rpcscan,用于扫描 Mach 服务器并显示关联到 demuxer 的 RPC
  • 代码可以工作在更新版本的编译器和 libc 下

下载地址:

与之同时发布的还有 GNU Mach 1.6 、GNU MIG 1.6。GNU MachMach 微内核的 GNU 版本,它是 GNU Hurd 系统的基础。该微内核提供了 IPC 机制,用于定义一个接口,以实现传统的操作系统内核所提供的分布式的多服务器功能。GNU MIGMach 3.0 接口生成器 (MIG) 的 GNU 版本。它用来将 RPC 定义的文件翻译为 C 代码,主要用于编译 Hurd 时 RPC 相关的软件包。

以下是 Hurd 发布历史:

在不久前的 Linux 大会活动 LinuxCon Linux 基金会 Linux Foundation 宣称 实时Linux操作系统项目 RTL,Real-Time Linux 得到了新的资金支持,并预期这将促进该项目,使其自成立15年来第一次有机会在实时操作性上和其他的 实时操作系统 RTOS,Real Time Operation System 一较高下。Linux 基金会将 RTL 组重组为一个新的项目,并命名为 RTL协作组 Real-Time Linux Collaborative Project ,该项目将获得更有力的资金支持,更多的开发人员将投入其中,并更加紧密地集成到 Linux 内核主线开发中。

新的 RTL 协作组将加速实时 Linux 的发展

根据 Linux 基金会的说法,RTL 项目并入 Linux基金会旗下后,“在研发方面将为业界节省数百万美元的费用。”同时此举也将“通过强有力的上游内核测试体系而改善本项目的代码质量”。

在过去的十几年中,RTL 项目的开发管理和经费资助主要由 开源自动化开发实验室 OSADL,Open Source Automation Development Lab 承担,OSADL 将继续作为新合作项目的金牌成员之一,但其原来承担的资金资助工作将会在一月份移交给 Linux 基金会。RTL 项目和 OSADL 长久以来一直负责维护 内核的实时抢占 RT-Preempt 或 Preempt-RT 补丁,并定期将其更新到 Linux 内核的主线上。

据长期以来一直担任 OSADL 总经理的 Carsten Emde 博士介绍,支持内核实时特性的工作已经完成了将近 90%。 “这就像盖房子,”他解释说。 “主要的部件,如墙壁,窗户和门都已经安装到位,就实时内核来说,类似的主要部件包括: 高精度定时器 high-resolution timers 中断线程化机制 interrupt threads 优先级可继承的互斥量 priority-inheritance mutexes 等。然后所剩下的就是需要一些边边角角的工作,就如同装修房子过程中还剩下铺设如地毯和墙纸等来完成最终的工程。”

以 Emde 观点来看,从技术的角度来说,实时 Linux 的性能已经可以媲美绝大多数其他的实时操作系统 - 但前提是你要不厌其烦地把所有的补丁都打上。 Emde 的原话如下:“该项目(LCTT 译注,指 RTL)的唯一目标就是提供一个满足实时性要求的 Linux 系统,使其无论运行状况如何恶劣都可以保证在确定的、可以预先定义的时间期限内对外界处理做出响应。这个目标已经实现,但需要你手动地将 RTL 提供的补丁添加到 Linux 内核主线的版本代码上,但将来的不用打补丁的实时 Linux 内核也能实现这个目标。唯一的,当然也是最重要的区别就是相应的维护工作将少得多,因为我们再也不用一次又一次移植那些独立于内核主线的补丁代码了。”

新的 RTL 协作组将继续在 Thomas Gleixner 的指导下工作,Thomas Gleixner 在过去的十多年里一直是 RTL 的核心维护人员。本周,Gleixner 被任命为 Linux 基金会成员,并加入了一个特别的小组,小组成员包括 Linux 稳定内核维护者Greg Kroah-Hartman,Yocto 项目维护者 Richard Purdie 和 Linus Torvalds 本人。

据 Emde 介绍,RTL 的第二维护人 Steven Rostedt 来自 Red Hat 公司,他负责“维护旧的,但尚保持维护的内核版本”,他将和同样来自 Red Hat 的 Ingo Molnàr 继续参与该项目,Ingo 是 RTL 的关键开发人员,但近年来更多地从事咨询方面的工作。有些令人惊讶的是,Red Hat 竟然不是 RTL 协作组的成员之一。相反,谷歌作为唯一的白金会员占据了头把交椅,其他黄金会员包括 国家仪器公司 NI,National Instruments ,OSADL 和德州仪器(TI)。银卡会员包括Altera 公司,ARM,Intel 和 IBM。

走向实时内核的漫长道路

当15年前 Linux 第一次出现在嵌入式设备上的时候,它所面临的嵌入式计算市场已经被其他的实时操作系统,譬如 风河公司 WindRiver 的 VxWorks,所牢牢占据。VxWorks 从那时起到现在,一直在为众多的工控设备、航空电子设备以及交通运输应用提供着工业级别的高确定性的,硬实时的内核。微软后来也提供了一个支持实时性的操作系统版本- Windows CE,当时的 Linux 所面临的是来自潜在工业客户的公开嘲讽和层层阻力。他们认为那些从桌面系统改进来的 Linux 发行版本顶多适合要求不高的轻量级消费类电子产品,而不适合那些对硬实时要求更高的设备。

对于嵌入式 Linux 的先行者如 MontaVista 公司来说,其早期的目标很明确就是要改进 Linux 的实时能力。多年以来,对 Linux 的实时性能开发发展迅速,得到各种组织的支持,如成立于2006年的 OSADL,以及 实时 Linux 基金会 RTLF,Real-Time Linux Foundation 。在2009年 OSADL 与 RTLF 合并,OSADL 及其 RTL 组承担了所有的 抢占式实时内核 Preempt-RT 补丁的维护工作和将补丁提交到上游内核主线的工作。除此之外 OSADL 还负责监管其他自动化相关的项目,例如 高可靠性 Linux Safety Critical Linux (译者注:指研究如何在关键系统上可靠安全地运行Linux)。

OSADL 对 RTL 的支持经历了三个阶段:拥护和推广,测试和质量评估,以及最后的资金支持。Emde 表示,在早期,OSADL 的角色仅限于写写推广的文章,制作专题报告,组织相关培训,以及“宣传” RTL 的优点。他说:“要让一个相当保守的工控行业接受象 Linux 之类的新技术及其基于社区的那种开发模式,首先就需要建立其对新事物的信任。从使用专有的实时操作系统转向改用 Linux 对公司意味着必须引入新的战略和流程,才能与社区进行互动。”

后来,OSADL 改而提供技术性能数据,建立质量评估和测试中心,并在和开源相关的法律事务问题和安全认证方面向行业成员提供帮助。

当 RTL 在实时性上变得愈加成熟的同时,相反地 Windows CE 却是江河日下,其市场份额正在快速地被 RTL 所蚕食,一些与 RTL 竞争的实时 Linux 项目,主要是 Xenomai 也已开始集成 RTL。

“伴随 RTL 补丁的成功,以及明确的预期其最终会被完整集成到 Linux 内核主线代码中,导致 Xenomai 关注的重心发生了变化,”Emde 说。 “Xenomai 3.0 可与 RT 补丁结合起来使用,并提供了所谓的‘皮肤’,(LCTT 译注:一个封装层),使我们可以复用为其他系统编写的代码。不过,它们还没有完全统一起来,因为 Xenomai 使用了双内核方法,而RT 补丁只适用于单一的 Linux 内核。“

近些年来,RTL 组的资助来源越来越少,所以最终 OSADL 接过了这个重任。Emde 说:“当最近开发工作因缺少资金而陷入停滞时,OSADL 对 RTL 的支持进入到第三个重大阶段:开始直接资助 Thomas Gleixner 的工作。”

正如 Emde 在其10月5日的一篇博文中所描述的那样,实时 Linux 的应用领域正在日益扩大,由其原来主要服务的工业控制扩大到了汽车行业和电信业等领域,这表明资助的来源也应该得到拓宽。Emde 原文写道:“仅仅靠来自工控行业的资金来支撑全部的工作是不合理的,因为电信等其他行业也在享用实时 Linux 内核。”

当 Linux 基金会表明有兴趣提供资金支持时,OSADL 认为“单一的资助和控制渠道要有效得多”(LCTT 译注:指最终由Linux 基金会全盘接手了 RTL 项目),Emde 如是说。不过,他补充说,作为黄金级成员,OSADL 仍参与监管项目的工作,会继续从事其宣传和质量保证方面的活动。

汽车行业期待 RTL 的崛起

Emde 表示,RTL 会继续在工业应用领域飞速发展并逐渐取代其他实时操作系统。而且,他补充说,RTL 在汽车行业发展也很迅猛,以后会扩大并应用到铁路和航空电子设备上。

的确,Linux 在汽车行业将扮演越来越重要的角色,这也是 Linux 基金对 RTL 所寄予厚望的原因之所在。RTL 工作组可能会与 Linux 基金会旗下的 车载Linux AGL,Automotive Grade Linux 工作组展开合作。Emde 猜测,Google 高调参与的主要动因可能也是希望将 RTL 用于汽车控制。此外,德州仪器(TI)也非常期望将其 Jacinto 处理器应用于汽车行业。

面向车载 Linux 的项目(比如AGL)的目标是要扩大 Linux 在车载设备上的应用范围,其应用不是仅限于 车载信息娱乐 IVI,In-Vehicle Infotainment ,而是要进入到譬如集群控制和车载通讯领域,而这些领域目前主要使用的是 QNX 之类的实时操作系统。无人驾驶汽车在实时性上对操作系统也有很高的要求。

Emde 特别指出,OSADL 的 SIL2LinuxMP 项目可能会在将 RTL 引入到汽车工业领域上扮演重要的角色。SIL2LinuxMP 并不是专门针对汽车工业的项目,但随着 BMW 公司参与其中,汽车行业成为其很重要的应用领域之一。该项目的目标在于验证 RTL 在采用单核或多核 CPU 的 标准化商用 COTS,Commercial Off-The-Shelf 板卡上运行所需的基本组件。它定义了引导程序、根文件系统、Linux 内核以及对应支持 RTL 的 C 库。

无人机和机器人使用实时 Linux 的时机也已成熟,Xenomai 系统早已用在许多机器人以及一些无人机中。不过,在更广泛的嵌入式 Linux 世界,包括了消费电子产品和物联网应用中,RTL 可以扮演的角色很有限。主要的障碍在于,无线通信和互联网本身会带来延迟。

Emde 说:“目前实时 Linux 主要还是应用于系统内部控制以及系统与周边外设之间的控制,在远程控制机器上作用不大。企图通过互联网实现实时控制恐怕不是一件可行的事情。”


via: http://www.linux.com/news/software/applications/858828-new-collaborative-group-to-speed-real-time-linux

作者:Eric Brown 译者:unicornx 校对:wxy

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