小编use*_*394的帖子

为配备NVMe SSD的主机选择正确的Linux I/O调度程序?

我们正在为少数主机编写一个高度并发的C++软件,所有主机都配备了一个ST9500620NS作为系统驱动器和一个用于数据的Intel P3700 NVMe Gen3 PCIe SSD卡.为了更好地理解系统调试我的软件,我在系统中挖了两个(两个E5-2620 v2 @ 2.10GHz CPU,32GB RAM,运行CentOS 7.0)并且惊讶地发现以下内容:

[root@sc2u0n0 ~]# cat /sys/block/nvme0n1/queue/scheduler 
none
Run Code Online (Sandbox Code Playgroud)

这与我在选择正确的Linux I/O调度程序方面所学到的一切相矛盾,例如来自kernel.org上的官方文档.

我知道NVMe是一个新的孩子,所以现在我不会触及现有的调度程序设置.但我真的对安装人员输入的"无"感到奇怪.如果有人提示我可以在哪里找到更多信息或分享您的发现,我将不胜感激.到目前为止,我花了很多时间用谷歌搜索而没有找到任何具体内容.

linux scheduler linux-kernel

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

cpack生成具有与RPM规范冲突的%文件条目的RPM.怎么修?

最近,我需要确保我们的软件可以使用cpackRHEL 7及其免费重建(例如CentOS 7)进行打包.尽管如此,我一直遇到RHEL 6.x及其免费重建所不存在的问题:cpack生成的RPM 都在其%files部分系统目录条目中具有如下内容:

%dir %attr(0755, root, root) "/"
%dir %attr(0755, root, root) "/usr"
%dir %attr(0755, root, root) "/usr/bin"
%dir %attr(0755, root, root) "/usr/share"
%dir %attr(0755, root, root) "/usr/share/applications"
%dir %attr(0755, root, root) "/usr/share/doc"
%dir %attr(0755, root, root) "/usr/share/icons"
%dir %attr(0755, root, root) "/usr/share/icons/hicolor"
%dir %attr(0755, root, root) "/usr/share/icons/hicolor/scalable"
%dir %attr(0755, root, root) "/usr/share/icons/hicolor/scalable/apps"enter code here
Run Code Online (Sandbox Code Playgroud)

不应该由包声明.

AFAIK,这个要求多年来一直在RPM规范中,但仅在RPM的最新版本(即比4.8.0更新)中强制实施.由于RHEL 7与RPM 4.11.1捆绑在一起,因此在下列期间cpack生成的内容filesystem-3.2-18.el7.x86_64与下面的错误冲突yum install ...:

file / from install of …
Run Code Online (Sandbox Code Playgroud)

rpm cmake cpack

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

使用clang ++/libc ++删除Boost libstdc ++依赖项?

这个问题的答案如何使用clang ++/libc ++编译/链接Boost?陈述Boostclang++libc++,以下应该做:

./b2 clean
./b2 toolset=clang cxxflags="-stdlib=libc++" linkflags="-stdlib=libc++"
Run Code Online (Sandbox Code Playgroud)

我在Scientific Linux 6.4 x86_64主机上测试了上述提示,它"主要"用于构建完整的Boost 1_53_0发行版,使用clang++ 3.3svlibc++ 3.3svn.我大多说,因为我真的想删除所有的libstdc++依赖.

不过,以下内容:

  • libboost_graph
  • libboost_locale
  • libboost_regex

仍显示libstdc++依赖关系(ldd输出使其非常明显).我想知道一个很好的方法来删除这样的,并会欣赏任何提示.

c++ boost clang libstdc++ libc++

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

为什么这个用于分布式计算的Python 0MQ脚本以固定的输入大小挂起?

我最近开始学习0MQ.今天早些时候,我遇到了一个博客,使用ZeroMQ进行Python多处理.它谈到了我读到的0MQ指南中的呼吸机模式,所以我决定尝试一下.

我决定尝试让呼吸机通过0mq消息向工作人员发送大型阵列,而不是像原始代码那样只计算工人的数字产品.以下是我用于" 实验 "的代码.

如下面的评论中所述,每当我尝试将变量string_length增加到大于3MB的数字时,代码就会挂起.

典型症状:假设我们将string_length设置为4MB(即4194304),然后结果管理器可能从一个worker获取结果,然后代码暂停.htop显示2个核心没有做太多.Etherape网络流量监视器也显示lo接口上没有流量.

到目前为止,经过几个小时的环顾四周,我无法弄清楚造成这种情况的原因,并且会对这个问题的原因和解决方案提出一两个暗示.谢谢!

我在配备Intel Core CPU,8GB RAM,80GB Intel X25MG2 SSD,Python 2.7.1 +,libzmq1 2.1.10-1chl1~natty1,python-pyzmq 2.1.10-1chl1~natty1的戴尔笔记本电脑上运行Ubuntu 11.04 64bit

import time
import zmq
from multiprocessing import Process, cpu_count

np = cpu_count() 
pool_size = np
number_of_elements = 128
# Odd, why once the slen is bumped to 3MB or above, the code hangs?
string_length = 1024 * 1024 * 3

def create_inputs(nelem, slen, pb=True):
    '''
    Generates an array that contains …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing distributed-computing multiprocessing zeromq

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

使用cmake构建和打包LLVM clang 3.4

cmake大约两周前开始学习并喜欢它.到目前为止,我已经成功地构建和包装(与本地系统封装格式)libc++abi,libc++,llvm3.4所有cmake(libc++abi我自己cmake设置)为RHEL 6.x中,20 +的Fedora和Ubuntu 12.04 LTS +.

我想创建一个C++构建环境

  1. 让我们libstdc++完全依赖GNU GCC(因此我们不希望从上述发行版或LLVM Debian/Ubuntu夜间软件包下载站点获得任何LLVM RPM/DEB )
  2. 使我们能够完全探索C++ 11和C++ 1y.换句话说,我们可以尝试,甚至我们想同时保持我们所有的编译系统干净,包管理系统最前沿LLVM /铛随时随地.

尽管如此,我试图在运行Ubuntu 12.04 LTS 64bit的构建主机上构建clang3.4 cmake,并使用由我构建的纯粹的 clang 3.3 而不依赖于GNU libstdc++,以及libc++3.3和libc++abi.后两者也没有libstdc++依赖.我也是这样建造的.

我非常了解Clang - Getting Started网页,并成功使用了那里的说明.但这些正是我不想使用的.他们是不正确太:对CMakeLists.txtclang3.4明确规定如下:

 1  # If we are not building …
Run Code Online (Sandbox Code Playgroud)

cmake llvm clang c++11

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

Python多处理管道recv()doc不清楚或者我错过了什么?

我最近一直在学习如何使用Python多处理模块,并阅读官方文档.在16.6.1.2.在进程之间交换对象有一个关于使用管道交换数据的简单示例.

并且,在16.6.2.4中.连接对象,有这样的声明,引用" 如果没有剩下的东西可以接收而另一端被关闭则引发EOFError ".

所以,我修改了如下所示的示例.恕我直言,这应该触发EOFError异常:没有发送任何内容,发送端已关闭.

修订后的代码:

from multiprocessing import Process, Pipe

def f(conn):
    #conn.send([42, None, 'hello'])
    conn.close()

if __name__ == '__main__':
    parent_conn, child_conn = Pipe()
    p = Process(target=f, args=(child_conn,))
    p.start()
    #print parent_conn.recv()   # prints "[42, None, 'hello']"
    try:
        print parent_conn.recv()
    except EOFError:
        pass
    p.join()
Run Code Online (Sandbox Code Playgroud)

但是,当我在我的Ubuntu 11.04机器Python 2.7.2上尝试修改过的示例时,脚本挂起了.

如果有人能指出我错过了什么,我将非常感激.

python pipe multiprocessing

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

为LLVM libc ++ 3.3构建静态和共享库

libc++来自SVN 的最新LLVM 3.3附带一个CMakeLists.txt.我是一个CMake新手,但昨天我研究了足够能够libc++在RHEL 6.4 x86_64主机上建立结账.

另外,我能够添加足够的CPack相关命令CMakeLists.txt来生成一个libcxx-3.3.svn-0.el6.x86_64.rpm.但很可能由于是新手CMake,我无法同时构建静态和共享库.

是.我回顾是否有可能让CMake构建同一个库的静态和共享版本?.但是,add_library我不想使用和枚举所有源文件,而是想使用libc++'s CMakeList.txt- 使用的方法APPEND.

我可以通过替换ON下面的第40行来生成静态库,OFF以构建静态库

40  option(LIBCXX_ENABLE_SHARED "Build libc++ as a shared library." ON)
41 
Run Code Online (Sandbox Code Playgroud)

或者我可以保持原样并构建一个共享库.

我还修改了以下几行,例如消除NOT或注释掉第232和233行.但无论我尝试什么,我似乎无法让静态库与共享库一起构建.

232  if (NOT LIBCXX_ENABLE_SHARED)
233    list(APPEND LIBCXX_CXX_FEATURE_FLAGS -D_LIBCPP_BUILD_STATIC)
234  endif()
Run Code Online (Sandbox Code Playgroud)

如何调整CMakeList.txt文件以便同时构建文件?

c++ cmake clang cpack libc++

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