小编Eri*_*nen的帖子

强制Linux只使用超过4G的内存?

我有一个Linux设备驱动程序,它接口到一个理论上可以使用64位地址执行DMA的设备.我想测试看看这实际上是否有效.

有没有一种简单的方法可以强制Linux机器不使用物理地址4G以下的任何内存?如果内核映像处于低内存状态,则可以.我只是希望能够强制我知道所有动态分配的缓冲区的情况,并且为我分配的任何内核或用户缓冲区都不能以32位进行寻址.这是一种蛮力,但比我能想到的任何其他东西都更全面.

这应该有助于我捕获(1)未正确配置或加载完整地址(或只是简单破坏)的硬件,以及(2)意外和不必要地使用反弹缓冲区(因为无处可跳转).

澄清:我正在运行x86_64,所以我不关心大多数旧的32位寻址问题.我只想测试驱动程序是否可以使用64位物理地址正确连接大量缓冲区.

linux linux-device-driver linux-kernel

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

如何通过客户端请求干净地退出Pyro Daemon?

我正在尝试使用Pyro来控制一台奴隶机器.我rsync必要的python文件,启动Pyro服务器,通过远程控制执行一些操作,然后我想告诉Pyro服务器关闭.

我无法让Pryo Daemon干净地关闭.它要么在挂断Daemon.close()电话中挂起,要么如果我注释掉它退出的那一行而没有正确关闭它的套接字,socket.error: [Errno 98] Address already in use那么如果我太快重启服务器就会导致它.

它不认为SO_REUSEADDR是正确的修复,因为不洁的套接字关闭仍然导致套接字在TIME_WAIT状态中挂起,可能导致一些客户端遇到问题.我认为更好的解决方案是说服Pyro Daemon正确关闭其套接字.

从守护进程本身调用Daemon.shutdown()是不合适的吗?

如果我启动服务器然后按CTRL-C而没有连接任何客户端我没有任何问题(没有Address already in use错误).这使得干净关闭似乎成为可能,大多数时候(假设一个理智的客户端和服务器).

例: server.py

import Pyro4

class TestAPI:
    def __init__(self, daemon):
        self.daemon = daemon
    def hello(self, msg):
        print 'client said {}'.format(msg)
        return 'hola'
    def shutdown(self):
        print 'shutting down...'
        self.daemon.shutdown()

if __name__ == '__main__':
    daemon = Pyro4.Daemon(port=9999)
    tapi = TestAPI(daemon)
    uri = daemon.register(tapi, objectId='TestAPI')
    daemon.requestLoop()
    print 'exited requestLoop'
    daemon.close() # this hangs
    print 'daemon closed'
Run Code Online (Sandbox Code Playgroud)

例: client.py

import Pyro4

if __name__ …
Run Code Online (Sandbox Code Playgroud)

python sockets pyro

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

减少Linux上的性能差异

我正在尝试对在基于Linux的Intel Pentium上运行的软件进行基准测试。问题是,当使用RDTSC指令时,我在连续的测试运行期间会出现相当大的性能差异。完全相同的软件运行时间在500万到1000万个时钟周期之间变化,因此在最坏的情况下,我的开销为100%。我知道缓存争用会导致性能变化,但是,是否有办法消除其他潜在问题,例如中断,其他进程等?

非常感谢您如何正确执行此操作的任何有用提示。

非常感谢,肯尼

linux performance benchmarking

4
推荐指数
2
解决办法
851
查看次数

C:分配限制

我试图分配〜1GB,但是当我检查指针地址时它是一个负数.这可能是我在某处遇到的配置限制.

  • 目标是分配〜1GB
  • 限制~0.7GB([struct] 48*16890)
  • 1.5GB可用内存
  • 在此之前没有分配大量内存.
  • 使用fedora linux.
  • 没有编译器错误

c configuration memory-management

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