标签: kernel

linux内核中的函数调用者

有没有办法在linux内核中获取函数调用?我知道__ func __返回正在执行的函数名.我正在寻找名为" __ func __ "的函数

kernel linux-device-driver linux-kernel embedded-linux kernel-mode

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

vmsplice()和TCP

在最初的vmsplice()实现中,有人建议如果你有一个用户区缓冲区2x可以容纳管道的最大页数,那么缓冲区后半部分成功的vmsplice()将保证内核完成使用缓冲区的前半部分.

但事实并非如此,特别是对于TCP,内核页面将被保留,直到从另一方接收到ACK.修复这个问题是未来的工作,因此对于TCP,内核仍然需要从管道中复制页面.

vmsplice()有一个SPLICE_F_GIFT选项可以处理这个,但问题是这暴露了另外两个问题 - 如何有效地从内核获取新页面,以及如何减少缓存垃圾.第一个问题是mmap需要内核清除页面,第二个问题是虽然mmap可能会使用内核中的花式kscrubd功能,但这会增加进程的工作集(缓存垃圾).

基于此,我有以下问题:

  • 通知userland关于页面安全重用的当前状态是什么?我特别感兴趣的是将splice()d拼接到套接字(TCP)上.在过去的5年里发生了什么事吗?
  • mmap/ vmsplice/ splice/ munmap目前在TCP服务器中进行零复制的最佳实践还是今天我们有更好的选择?

linux kernel mmap splice zero-copy

20
推荐指数
1
解决办法
3453
查看次数

如何解决“Docker Desktop - WSL 内核版本太低”错误

如何解决“Docker Desktop - WSL 内核版本过低 [内容]”错误?

错误消息的其余部分:

Docker Desktop 需要更新的 WSL 内核版本。

通过运行“wsl --update”更新 WSL 内核,或按照https://docs.microsoft.com/windows/wsl/wsl2-kernel中的说明进行操作。

在此输入图像描述

解决办法是:

  • wsl --update

kernel version docker windows-subsystem-for-linux

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

你如何诊断内核oops?

鉴于Linux内核oops,你如何诊断问题?在输出中,我可以看到堆栈跟踪,似乎给出了一些线索.有没有什么工具可以帮助找到问题?您要遵循哪些基本程序来追踪它?


Unable to handle kernel paging request for data at address 0x33343a31
Faulting instruction address: 0xc50659ec
Oops: Kernel access of bad area, sig: 11 [#1]
tpsslr3
Modules linked in: datalog(P) manet(P) vnet wlan_wep wlan_scan_sta ath_rate_sample ath_pci wlan ath_hal(P)
NIP: c50659ec LR: c5065f04 CTR: c00192e8
REGS: c2aff920 TRAP: 0300   Tainted: P          (2.6.25.16-dirty)
MSR: 00009032   CR: 22082444  XER: 20000000
DAR: 33343a31, DSISR: 20000000
TASK = c2e6e3f0[1486] 'datalogd' THREAD: c2afe000
GPR00: c5065f04 c2aff9d0 c2e6e3f0 00000000 00000001 00000001 00000000 0000b3f9
GPR08: 3a33340a c5069624 c5068d14 …
Run Code Online (Sandbox Code Playgroud)

linux debugging kernel

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

如何加速Linux内核编译?

我有8GB RAM的核心i5.我的机器上安装了VMware工作站10.0.1.我在VMware上安装了Fedora 20 Desktop Edition作为客户操作系统.

我正在研究Linux内核源代码v 3.14.1.我正在为Linux内核开发一个I/O调度程序.每次编译和安装整个内核代码以查看更改大约花费1小时30分钟后,对代码进行任何修改.

编译和安装命令: make menuconfig, make, make modules, make modules_install, make install

所以我的问题是可以将1小时30分钟的时间缩短到10到15分钟吗?

linux time kernel compilation

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

在 Google Colaboratory 中安装 Python 3.8 内核

我尝试使用 conda 安装新的 Python 版本 (3.8)。

!wget -O mini.sh https://repo.anaconda.com/miniconda/Miniconda3-py38_4.8.2-Linux-x86_64.sh
!chmod +x mini.sh
!bash ./mini.sh -b -f -p /usr/local
Run Code Online (Sandbox Code Playgroud)

这工作正常。我可以打电话!python script.py来运行 3.8 版本。

因此,我尝试使用 Python 3.8 内核安装另一个 jupyter 内核。

!conda install -q -y --prefix /usr/local jupyter
!python -m ipykernel install --name "py38" --user
Run Code Online (Sandbox Code Playgroud)

我检查内核是否已安装。

!jupyter kernelspec list
Run Code Online (Sandbox Code Playgroud)

然后我把笔记本下载下来。打开文本编辑器将内核规范更改为

"kernelspec": {
  "name": "py38",
  "display_name": "Python 3.8"
}
Run Code Online (Sandbox Code Playgroud)

这与之前使用 Javascript、Java 和 Golang 的技巧相同。

然后我将编辑后的笔记本上传到 Google Drive。在 Google Colab 中打开笔记本。它找不到py38内核,所以它使用普通的python3内核。我再次运行所有这些单元格。

!wget -O mini.sh https://repo.anaconda.com/miniconda/Miniconda3-py38_4.8.2-Linux-x86_64.sh
!chmod +x mini.sh
!bash ./mini.sh -b -f …
Run Code Online (Sandbox Code Playgroud)

kernel jupyter-notebook google-colaboratory python-3.8

19
推荐指数
3
解决办法
2万
查看次数

对于内核/操作系统来说还是C呢?

我喜欢操作系统,最终想成为一个主要从事内核工作的操作系统开发人员.在未来,C仍然是首选语言,我还应该学习什么?

operating-system kernel osdev

18
推荐指数
3
解决办法
4164
查看次数

__udivdi3 undefined - 如何找到使用它的代码?

在32位Linux内核上编译内核模块会导致

"__udivdi3" [mymodule.ko] undefined!
"__umoddi3" [mymodule.ko] undefined!
Run Code Online (Sandbox Code Playgroud)

在64位系统上一切都很好.据我所知,原因是32位Linux内核不支持64位整数除法和模数.

如何找到发出64位操作的代码.它们很难手动找到,因为我无法轻易检查"/"是32位宽还是64位宽.如果"正常"函数未定义,我可以grep它们,但这不可能在这里.还有另一种搜索引用的好方法吗?某种"机器代码grep"?

该模块由几千行代码组成.我真的不能手动检查每一行.

c linux kernel linux-kernel

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

如何在linux内核空间中读取环形缓冲区?

我正在编写一个Linux字符驱动程序,可以在用户空间中打印系统日志.正如命令'dmesg'那样.我已经了解到,使用'printk'打印的所有日志都将被发送到名为ring buffer的空间.所以我有问题:

  1. 内核空间里面有环形缓冲区吗?
  2. 如果是这样,我如何读取内核空间内的环形缓冲区?(我试过阅读dmesg.c的源代码.但它没有帮助.)

linux logging kernel circular-buffer linux-kernel

18
推荐指数
2
解决办法
1万
查看次数

我怎么知道我的服务器是否有NUMA?

从Java Garbage Collection跳转,我遇到了NUMA的JVM设置.奇怪的是我想检查我的CentOS服务器是否具有NUMA功能.是否有可以获取此信息的*ix命令或实用程序?

linux kernel jvm processor numa

18
推荐指数
5
解决办法
3万
查看次数