Linux 和 Xdmx 的分布式多线程支持(1)
- UID
- 1066743
|
Linux 和 Xdmx 的分布式多线程支持(1)
向计算设置添加监视器,通常会极大地提高生产率,因为可以消除频繁地切换任务的需求。这和其他许多好处,早已经为那些使用多线程图形卡或者在同一台 PC 上使用多块图形卡的用户所熟知。使用 Linux 和 Xdmx,任何具有两个显示设备和两台计算机的人,不必投资于新硬件,就可以享受多线程设置的好处。
使用 Xdmx 和一些简单的配置建议,我们将设置一个具有四台监视器的计算环境,其中包括一台台式机和三台笔记本。将学习使用 Chromium 和千兆网络速度跨多个百万像素显示器分发实时 3-D 图形的高性能可视化设置。将学习在开发可以提高计算体验的多屏幕配置和物理布局时可以使用的工具。
需求这篇文章的开发在四台计算机上进行,有三块显卡,三个屏幕尺寸,三个独立的分辨率设置。内核级别 2.4.21-2.6.15 用于 X11 和 xorg 配置上,操作系统包括 Red Hat Enterprise Linux(RHEL)V3.5 和 Fedora Core 3 发布版。要点在于:硬件和软件的多样性并不是障碍。可以在包括许多硬件选项的众多分布上成功地安装和使用 Xdmx。
硬件需要以下硬件:
- 相对现代的 CPU —— 超过 486 的应当就可以(虽然有点儿慢)
- 快速的网络连接 —— 以太网或更好的
- 图形卡至少具备 16 位色深的能力 —— 如果低于此,使用开启 xinerama 的显示时会有困难
软件我们在现代的 Red Hat 和 Fedora Core 发布版上进行开发,但是其他许多发布版也应当可以满足需求。如果选择的发布版支持 RPM,就应当能够不从源代码编译 Xdmx 应用程序就能启动和运行。
Xdmx 的获取和安装软件获取请前往 Sourceforge.net 获得 Xdmx(请参阅 )。对于本文来说,RPM 就足够了。请在 Download DMX 区中找到 dmx-1.2.20040630-1.i386.rpm 文件。如果正在使用一个非常古老的发布版,或者使用不支持 RPM 的发布版,可能必须从头开始编译 DMX。源代码也在 Download DMX 区中,但是编译说明超出了这篇文章的范围。
安装有了 Xdmx RPM 之后,需要运行安装过程。在基于 RHEL V3.5 的系统上,rpm -Uvh dmx-1.2.20040630-1.i386.rpm 应当可以没有问题地安装好 Xdmx 应用程序。在 Fedora Core 3 和更高的系统上,在运行 RPM 命令时,可能看到类似 file /usr/X11R6/lib/libdmx.a from install of dmx-1.2.20040630-1 conflicts with file from package xorg-x11-devel-6.8.2-31 的错误消息。
作为解决方案,请使用 --force 选项:rpm --force -Uvh dmx-1.2.20040630-1.i386.rpm。警告:强制安装 Xdmx 软件可能会造成开发环境的不稳定。我曾经没有一点儿错误地运行使用 “强制安装的” Xdmx 软件的开发环境有一年多时间,但是您的体验可能会不同。如果不想强制安装,请从源代码编译 Xdmx 应用程序,然后安装。
在基于 Debian 的系统或使用 apt-get 的系统上,请用 apt-get install xdmx 安装并设置 Xdmx。
Xdmx 需要安装在要成为多线程显示设置组成部分的每台机器上。服务器和客户机都包含在 Xdmx 的安装包中。所以如果想添加显示节点、改变控制节点或者现有节点中出现硬件故障,不需要重新安装软件来支持不同的配置。
多线程操作的 PC 配置Xdmx 手册Xdmx 带有精彩的手册信息,提供了分布式多线程显示入门所需的全部信息。这篇文章的重点是帮助您克服与不同的硬件设置有关的一些比较困难的问题。所以请继续阅读一些如何使用 Xdmx 和如何克服可能面临的一些挑战的真实示例。
一台 PC,一台笔记本对于这个初始的示例,我们将使用一台 PC 和一台笔记本,做一个包括两个屏幕的设置,桌面要扩展到跨越两个显示器。开始时,请委托一个计算资源作为控制节点 —— 在我们的示例中,选择 PC 作为控制节点。
X 配置文件的设置使用不同的硬件的一个大问题是,不同的计算资源之间对延时特性的支持。在 Xdmx 工作之前,需要保证系统支持同一套选项。在这个示例中,所有的系统都没有安装相同的字体。 Xdmx 有一个选项来处理这个问题,稍后我们将介绍它。现在,请注意 GLX 支持和默认的显示位深是影响 Xdmx 正确运行的常见问题。为了把桌面扩展到多个屏幕上,请确保根窗口的位深与在每个屏幕上都相同。如果要使用多个独立的桌面,那么显示器之间的位深匹配不是必需的。由于在这个示例中,我们需要一个大的显示,所以请修改 Xorg.conf 或 XF86Config 文件,选择 16 位色深作为默认值。(只要所有的设备都支持,也可以选择 24 位或其他位深。)对于这个示例,16 位是所有硬件都支持的最高色深。
请做一份 Xorg.conf 或 XF86Config 文件的拷贝,然后再做以下修改。例如,在 RHEL 3.5 系统上,XF86Config 文件有以下几行:
清单 1. 示例 XF86Config 文件1
2
3
4
5
6
7
8
9
10
11
| Section "Screen"
Identifier "Screen0"
Device "Videocard0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1400x1050" "1280x1024" \
"1280x960" "1152x864" "1024x768" "800x600" "640x480"
EndSubSection
EndSection
|
把 DefaultDepth 24 改成 DefaultDepth 16,把 SubSection 下面负责显示的行从 Depth 24 改成 Depth 16。
如果拥有特定于硬件的定制驱动程序,那么可能需要恢复到默认设置或者尝试兼容的硬件支持。请参阅硬件的文档了解硬件支持的详细信息。例如,示例中的 RHEL V3.5 笔记本包含 ATI FireGL Mobility T2 显卡和相关的驱动程序。如上所示对 XF86Config 文件进行修改会造成错误,因为 fglrx 驱动程序不支持 16 位深度的设置。解决方案是运行 system-config-xfree86(在 Fedora Core 上用 system-config-display),并选择 VESA 模式作为兼容性支持。在 Advanced 选项卡中,选择 VESA Driver (generic) 作为视频卡。在 Monitor Type 部分中,把设置配置成支持显示器能处理的最大分辨率。回到 Display 选项卡,选择分辨率和 Thousands of Colors 作为色深。
现在位深已经匹配,可以尝试多屏幕设置了。在客户机节点上,启动 X 会话。如果是在运行级 3 上,可以使用命令 xinit 启动一个干净的 X 会话。如果已经登录到图形窗口管理器会话,例如 GNOME 或 KDE,请启动一个 Xterm。在客户机节点屏幕的 Xterm 窗口中,输入 xhost + control_node_ip,其中 control_node_ip 是控制节点的 IP 地址。对于这个示例,控制节点是 192.168.1.101,所以我就在客户机节点上运行命令 xhost + 192.168.1.101。
Xdmx 启动命令在控制节点上,请启动默认的 X 窗口系统会话。例如,如果正在运行 xdm,那么在启动时会出现登录屏幕;然后启动 GNOME 或 KDE 会话。不论怎样,请在控制节点上启动一个 Xterm。然后启动新的 Xdmx 会话,横跨两个运行 twm 窗口管理器的节点。当然,窗口管理器是自选的,但是请注意 GNOME 不支持在同一台计算机上运行两个实例。请在控制节点上运行以下命令:
清单 2. 示例 Xdmx 启动命令1
2
3
4
5
| startx `which twm` -- \
/usr/bin/X11R6/Xdmx :1 \
-display control_node_ip:0 \
-display client_node_1_ip:0 \
-ignorebadfontpaths \
|
其中 control_node_ip 是 192.168.1.101 ,client_node_1_ip 是客户机节点的 IP 地址。表 1 分解了这个命令。
表 1. 启动命令详解启动命令中的每一行 ...... 以及它的含义startx `which twm`用 twm 窗口管理器启动一个 X 会话-- /usr/bin/X11R6/Xdmx :1启动 Xdmx 程序,在 :1 上作为 X 会话-display control_node_ip:0使用控制节点上的显示器作为第一个监视器-display client_node_1_ip:0使用客户机节点上的显示器作为第二个监视器-ignorebadfontpaths从不考虑它们+xinerama把显示器当作一个桌面
如果命令成功完成,应当看到一个跨越两个屏幕的背景。在控制节点上移动鼠标,来验证有一个跨越两个屏幕的桌面,输入设备在控制节点上。请按 Ctrl+Alt+q 退出 Xdmx。 |
|
|
|
|
|