标签: kernel

如何清空 Linux 系统上的缓冲区和缓存?

在进行一些基准测试工作之前,如何释放 Linux 内核为其缓冲区和缓存消耗的内存 (RAM)?


请注意,这主要用于基准测试。清空缓冲区和缓存会降低性能!如果你在这里是因为你认为释放缓冲区和缓存是一件好事,那就去读一读Linux 吃了我的 RAM!. 简短的故事:空闲内存是未使用的内存是浪费的内存。

linux performance kernel cache ram

366
推荐指数
1
解决办法
83万
查看次数

分段错误如何在后台工作?

除了“CPU 的 MMU 发送信号”和“内核将其定向到违规程序并终止它”之外,我似乎找不到任何关于此的信息。

我认为它可能将信号发送到外壳,外壳通过终止违规进程和打印来处理它"Segmentation fault"。所以我通过编写一个我称之为crsh(废话 shell)的极简 shell 来测试这个假设。除了获取用户输入并将其提供给system()方法之外,此外壳不执行任何操作。

#include <stdio.h>
#include <stdlib.h>

int main(){
    char cmdbuf[1000];
    while (1){
        printf("Crap Shell> ");
        fgets(cmdbuf, 1000, stdin);
        system(cmdbuf);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我在一个裸终端中bash运行了这个 shell(没有在下面运行)。然后我继续运行一个产生段错误的程序。如果我的假设是正确的,这将 a) 崩溃crsh,关闭 xterm,b) 不打印"Segmentation fault",或 c) 两者兼而有之。

braden@system ~/code/crsh/ $ xterm -e ./crsh
Crap Shell> ./segfault
Segmentation fault
Crap Shell> [still running]
Run Code Online (Sandbox Code Playgroud)

回到第一个,我猜。我刚刚证明了不是外壳执行此操作,而是下面的系统。“分段错误”是如何打印出来的?“谁”在做?内核?还有什么?信号及其所有副作用如何从硬件传播到程序的最终终止?

shell kernel signals segmentation-fault

272
推荐指数
4
解决办法
4万
查看次数

如何在不重启的情况下重新加载 udev 规则?

应该如何重新加载 udev 规则,以便新创建的规则可以运行?

我正在运行 Arch Linux,但udevstart这里没有命令。

还检查了/etc/rc.d,那里没有 udev 服务。

kernel udev

261
推荐指数
4
解决办法
51万
查看次数

已达到内核 inotify 监视限制

我目前在 linux 机器上遇到问题,作为 root 我有命令返回错误,因为已达到 inotify 监视限制。

# tail -f /var/log/messages
[...]
tail: cannot watch '/var/log/messages': No space left on device
# inotifywatch -v /var/log/messages
Establishing watches...
Failed to watch /var/log/messages; upper limit on inotify watches reached!
Please increase the amount of inotify watches allowed per user via '/proc/sys/fs/inotify/max_user_watches'.` 
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索了一下,我发现的每个解决方案都是通过以下方式增加限制:

sudo sysctl fs.inotify.max_user_watches=<some random high number>
Run Code Online (Sandbox Code Playgroud)

但我无法找到任何有关提高该价值的后果的信息。我猜默认内核值的设置是有原因的,但它似乎不适用于特定用途。(例如,当使用带有大量文件夹的 Dropbox 或监控大量文件的软件时)

所以这里是我的问题:

  • 提高该值是否安全,过高的值会产生什么后果?
  • 有没有办法找出当前设置的手表是什么以及哪个进程将它们设置为能够确定达到的限制是否不是由有故障的软件引起的?

linux kernel inotify

247
推荐指数
2
解决办法
17万
查看次数

Linux下如何从/proc/$pid/mem读取?

Linux的proc(5)手册页告诉我,/proc/$pid/mem“可用于访问进程的内存的页面”。但是直接尝试使用它只会给我

$ cat /proc/$$/mem /proc/self/mem
cat: /proc/3065/mem: No such process
cat: /proc/self/mem: Input/output error
Run Code Online (Sandbox Code Playgroud)

为什么不能cat打印自己的内存(/proc/self/mem)?当我尝试打印 shell 的内存时,这个奇怪的“没有这样的进程”错误是什么(/proc/$$/mem显然进程存在)?那我怎么读/proc/$pid/mem呢?

linux process kernel memory proc

155
推荐指数
5
解决办法
14万
查看次数

内核 3.11 的 Linux 标志中的 Windows 标志是什么意思?

我刚刚为 Fedora 19 安装安装了 kernel-3.11.0-1.fc20。在重新启动过程中,我看到带有 Windows 标志的 Linux 标志,这是什么意思? Linux 内核 3.11 的 Linux 标志中的 Windows 标志

Fedora 19 安装在华硕 TX300CA 笔记本电脑中,安全启动关闭,CSM(BIOS 兼容性支持模块)模式开启。

kernel linux-kernel

123
推荐指数
3
解决办法
9472
查看次数

为什么swappiness默认设置为60?

我刚刚在 Linux 上阅读了一些关于 swappiness 的东西。我不明白为什么默认设置为 60。

根据我的说法,这个参数应该设置为 10 以减少交换。交换在我的硬盘上,所以它比我的记忆慢得多。

他们为什么要这样配置内核?

linux kernel swap

120
推荐指数
3
解决办法
7万
查看次数

如果 Linux 只是一个内核,那么它​​的第一个版本是如何使用的(没有分发)?

Linux只是一个内核,如果用户要使用它,那么他们需要一个完整的发行版。话虽如此,当没有 Linux 发行版时,Linux 的第一个版本是如何使用的?

linux kernel history linux-kernel

117
推荐指数
6
解决办法
2万
查看次数

Linux 上什么是高内存和低内存?

我对 Highmem 和 Lowmem 之间的区别感兴趣:

  1. 为什么会有这样的区别?
  2. 我们这样做有什么收获?
  3. 各有什么特点?

linux kernel memory

111
推荐指数
5
解决办法
11万
查看次数

编译自己的 linux 内核有什么好处?

自己编译 Linux 内核有什么好处?您可以通过将其定制为您的硬件来提高效率吗?

linux compiling kernel

110
推荐指数
7
解决办法
4万
查看次数