小编use*_*986的帖子

Linux命名空间:网络命名空间是否可以在不与进程关联的情况下存在?

ip netns创建参考的(命名)网络命名空间/var/run/ns,它可以很容易地跟踪.此外,同样可以通过确定/proc/[pid]/ns/net.但是,某些自定义程序可能会创建一个net ns并将相应的inode保存在其他非常规位置.这可能使得难以确定是否存在我们可以列出的净ns.

其次,unshare <cmd>当进程退出时会破坏net ns,这很好.但是,ip netns exec <netns> <cmd>即使命令/进程退出,也会保留ns.所以我相信,任何自定义程序都可以这样做.

因此,问题是:自定义程序是否可能创建一个未命名的net ns,并且它与任何进程无关

此外,如果我们不知道inode的路径,是否可以从用户空间列出这样的(隐藏的)网络?(内核当然有一个net ns的链表).代码片段会很有帮助.

networking linux-kernel lxc docker linux-containers

10
推荐指数
1
解决办法
713
查看次数

什么是重新安排中断(RES)?是什么导致的?如何在Linux内核中处理?

"RES:Rescheduling interrupts"和"LOC:Local timer interrupts"有什么区别?什么责任解​​雇RES中断?LOC是否与处理器中的定时器h/w生成的通用定时器中断相同?

另外,请详细说明在定时器中断和RES中断期间调度器的哪个部分被调用?如何在Linux内核中发生?

提前致谢.

processor timer interrupt scheduler linux-kernel

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

IPv6:在HA故障转移中使用浮动IP停止接口IP操作

当主节点发生故障时,其IP(IPv6)将浮动到备用节点.备用节点应该在该IP上提供服务.

鉴于这两个节点共存于同一LAN中,通常可以看出备用节点变得无法访问.接口为UP和RUNNING,并分配了IPv6地址,但所有IP操作都已停止.

一种可能性是当IP配置为待机时,重复地址检测(DAD)正在开始.RFC表示必须停止所有IP操作.

我的问题是关于Linux内核IPv6实现的细节.以前,从内核代码来看,我认为必须设置sysctl变量"disable_ipv6".但是内核没有禁用IPv6,它只是停止该接口上的所有IP操作.

任何人都可以解释Linux内核IPv6在DAD失败时"禁用这些IP操作"时的作用吗?如果不进行DOWN&UP接口,可以重置为正常吗?代码中的任何指针都将非常有用.

network-programming ipv6 linux-kernel openstack openstack-nova

8
推荐指数
1
解决办法
1003
查看次数

字节序和堆栈增长方向之间的关系

处理器的字节序与堆栈增长方向之间是否存在关系?

例如,x86 架构小端的,堆栈向下增长(即它从最高地址开始,并随着每个push操作向低地址增长)。类似地,在大端的SPARC 体系结构中,堆栈从最低地址开始并向上增长到更高的地址。

这种关系模式几乎可以在所有架构中看到。我相信这个未说明的约定一定是有原因的。这可以从计算机架构或操作系统的角度解释吗?这是为了对处理器内部的微码进行一些优化吗?这是否以某种方式帮助内核?或者可能是其他原因?

提前致谢!

embedded callstack cpu-architecture endianness

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

确定障碍物(围栏)的使用位置

x86指令lfence/sfence/mfence用于实现Linux内核中的rmb()/wmb()/mb()机制。很容易理解,它们用于串行化内存访问。然而,在遇到运行时行为中的错误之前,在编写代码时确定何时何地使用它们要困难得多。

我很想知道在编写/审查代码时是否可以检查已知的警告,这可以帮助我们确定必须在哪里插入障碍。我知道这太复杂了,但是是否有经验法则或清单可以帮助我们识别需要这些的代码位置?

concurrency kernel memory-management linux-kernel memory-barriers

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

Linux 设备驱动程序中针对多线程应用程序的 READ/WRITE 和 RELEASE 处理

在编写驱动程序时,我遇到了下面提到的问题。

假设多线程应用程序通过相同的 FD 访问相同的设备文件。考虑在对 OPEN 和 RELEASE 的调用之间,线程组相互持有一些资源(比如互斥锁)。这些资源在 READ/WRITE 调用期间使用,然后最终在 RELEASE 期间放弃或销毁。

如果在 READ/WRITE 期间有一个线程访问资源,而另一个线程同时通过调用 close 调用 RELEASE,则 VFS 如何确保在 READ、WRITE 或 READ 中至少有一个线程之前不会调用 RELEASE喜欢。什么机制处理这种保护?

mutex vfs linux-device-driver linux-kernel

3
推荐指数
1
解决办法
624
查看次数

k8s:同一部署的 Pod 之间进行通信

在属于同一副本集(部署)的 Pod 之间进行通信的推荐方式是什么?是否可以从给定的 pod 中查找其他 pod 的 url?

或者副本集不是一个正确的方法?

寻找正确的 k8s 方法来做到这一点。谢谢!

kubernetes kubernetes-pod

3
推荐指数
1
解决办法
1364
查看次数

"将它包装在bufio.NewReader中,如果它不支持ReadByte"模式

以下是其中一个Go库的片段.任何人都可以指出其意义r.(byteReader)吗?新手的语法用法不是很明显.byteReader是一个已定义的接口,似乎不是其成员io.Reader.既然,这似乎是某种漂亮的代码,任何人都可以提供一些见解.

作者提到:"将它包装在bufio.NewReader中,如果它不支持ReadByte"模式.https://github.com/dave-andersen/deltagolomb/blob/master/deltagolomb.go

type byteReader interface {
    io.Reader
    ReadByte() (c byte, err error)
}

func makeReader(r io.Reader) byteReader {
    if rr, ok := r.(byteReader); ok {
        return rr
    }
    return bufio.NewReader(r)
}
Run Code Online (Sandbox Code Playgroud)

go

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