我的经验是,在物理内存耗尽之前,Linux 可以正常工作。一旦使用交换空间,性能就会严重下降并且 GUI 变得无响应。
这个问题不限于特定的发行版或桌面,因为我已经尝试了一些(问题仍然存在)。
我该怎么办?
我们都知道 Linus Torvalds 因为 Bitkeeper 的问题创建了 Git。不知道(至少对我而言)是,在那之前如何跟踪问题/故障单/错误?我试过了,但没有得到任何有趣的东西。我能够就该主题进行的唯一讨论是Linus 对使用 Bugzilla 的担忧。
推测: - 人们在初始阶段跟踪错误的最简单方法是将票放在自己的分支中,但我确信这不会随着噪音超过好错误而迅速扩展。
我见过并使用过 Bugzilla,除非您有时知道正确的“关键字”,否则您会被难住。注:我在最初几年(1991- 1995年),它们如何特别感兴趣用于跟踪问题。
我确实查看了两个线程,“内核 SCM 传奇”和“琐事:git 何时自托管? ”但是这些都没有提到早期内核的错误跟踪。
我四处搜索,但没有找到 1991-1992 年存在的任何 FOSS 错误跟踪软件。Bugzilla、Request-tracker 和其他工具出现得更晚,所以它们似乎已经过时了。
期待更清晰地了解过去的事情是如何完成的。
我想在 Linux(最好是 Ubuntu)中创建一个 USB 到 USB 数据传输系统。为此,我不想使用任何外部硬件或开关(除了这条电缆)。这就像将 USB 驱动器安装到系统一样,但在这种情况下,一个 Linux 系统将安装在另一个系统上。我怎样才能创建这个?
鉴于我的内核编程经验非常基础,是否有任何可用的内核模块?
直到最近,我认为负载平均值(如顶部所示)是处于“可运行”或“正在运行”状态的进程数的最后 n 个值的移动平均值。并且 n 将由移动平均线的“长度”定义:由于计算平均负载的算法似乎每 5 秒触发一次,对于 1 分钟平均负载,n 将为 12,对于 5 分钟平均负载为 12x5 和 12x15对于 15 分钟的平均负载。
但后来我读了这篇文章:http : //www.linuxjournal.com/article/9001。这篇文章已经很老了,但今天在 Linux 内核中实现了相同的算法。负载平均值不是移动平均值,而是一种我不知道名称的算法。无论如何,我对 Linux 内核算法和虚拟周期性负载的移动平均值进行了比较:
.
这是个很大的差异。
最后我的问题是:
第一个背景。我正在为 Logitech 游戏面板设备开发驱动程序。这是一个带有屏幕的键盘。驱动程序运行良好,但默认情况下设备由 HID 处理。为了防止 HID 在我的驱动程序之前接管设备,我可以在 hid-core.c 中将其列入黑名单。这有效,但不是最好的解决方案,因为我正在与几个人一起工作,我们都必须不断修补我们的 HID 模块,这正在成为一件苦差事,尤其是因为它通常涉及重建 initramfs 等。
我对这个问题做了一些研究,我发现了这个邮件列表帖子,它最终把我带到了关于 LWN 的这篇文章。这描述了一种在运行时将设备绑定到特定驱动程序的机制。这似乎正是我所需要的。
所以,我试过了。我能够解除键盘与 HID 的绑定。这行得通,正如预期的那样,我无法再打字了。但是当我尝试将它绑定到我们的驱动程序时,我收到“错误:没有这样的设备”并且操作失败。
所以我的问题是:如何使用内核绑定/取消绑定操作来复制当您将 hid-core 中的 HID 设备列入黑名单并提供您自己的驱动程序时会发生什么?- 即 - 取代一直修补 hid-core.c 的需要?
我们驱动的源码在这里:https : //github.com/ali1234/lg4l
UNIX 世界中的“一切都是文件”。
上面这句话很有名。当我运行时echo "hello programmer" >> /dev/tty1,我可以在TeleType 1 ...上观看给定的字符串。
每个文件是什么以及在哪里socket?假设我的朋友连接到我的电脑,它的 IP 是h.h.h.h,我如何访问相应的文件?是否可以?
我一直在阅读有关如何在 Linux 内核中实现管道的信息,并希望验证我的理解。如果我不正确,将选择具有正确解释的答案。
pipe:) 上,旁边是/pipe(2)系统调用pipe(2)shell 用于与|操作员(或从任何其他进程手动)进行管道传输的系统调用在 pipefs 中创建一个新文件,该文件的行为与普通文件非常相似stdout重定向到在 pipefs 中创建的临时文件stdin设置为 pipefs 上的文件这是对管道(例如ls -la | less)如何运作的解释非常正确吗?
我不明白的一件事是像 bash 这样的东西如何设置一个进程stdin或stdout由pipe(2). 我还没有找到任何关于它的信息。
我一直在学习一些调度概念。目前我的理解如下。
nice的优先级值可以在-20到+20的范围内。较高的正值表示该进程具有较低的优先级。-如本答案here中所述。这主要是因为实时进程比非实时进程具有更高的优先级,并且niceness 值不适用于它们。chrt来查看进程的实时属性。 对于实时过程,chrt给出的输出为,
chrt -p 5
pid 5's current scheduling policy: SCHED_FIFO
pid 5's current scheduling priority: 99
Run Code Online (Sandbox Code Playgroud)
正如我们在进程5 中看到的,优先级是 99,这是最高的。此外,调度策略是SCHED_FIFO
现在,对于非实时过程,chrt给出的输出为,
chrt -p 22383
pid 22383's current scheduling policy: SCHED_OTHER
pid 22383's current scheduling priority: 0
Run Code Online (Sandbox Code Playgroud)
正如我们所见,进程22383的优先级为 0,调度策略为SCHED_OTHER。
问题
SCHED_OTHER非实时进程之外,我是否可以设置其他一些调度算法?从这里,我还看到我可以修改正在运行的进程的属性,
chrt -p prio pid …Run Code Online (Sandbox Code Playgroud)使用 KMS,图形驱动程序被移动到内核中。由于帧缓冲区已经在内核中,我不希望这会影响帧缓冲区操作。然而,我读到 KMS 取代了 fb,增加了 fb,需要 fb,并且需要删除 fb 支持。有没有搞错?我正在寻找的答案是对 KMS 和帧缓冲区之间关系的解释。
我一直在使用 uvesafb 在 tty 上获得原始分辨率。我在这里的目的是了解这将如何在带有 KMS 的系统上工作。它也有助于涵盖诸如..使用 KMS 滚动速度更快吗?fbterm 和 fbida 等实用程序的工作方式相同吗?稳定性更好吗?
kernel ×10
linux ×5
drivers ×2
usb ×2
algorithms ×1
development ×1
files ×1
filesystems ×1
framebuffer ×1
git ×1
history ×1
io ×1
kms ×1
load ×1
monitoring ×1
performance ×1
pipe ×1
process ×1
scheduling ×1
socket ×1
swap ×1
terminal ×1