小编Don*_*d_W的帖子

测量NUMA(非统一内存访问).没有可观察到的不对称性.为什么?

我试图测量NUMA的非对称内存访问效果,但都失败了.

本实验

采用Intel Xeon X5570 @ 2.93GHz,2个CPU,8个内核.

在固定到核心0的线程上,我使用numa_alloc_local在核心0的NUMA节点上分配大小为10,000,000字节的数组x.然后我迭代数组x 50次并读取和写入数组中的每个字节.测量进行50次迭代所用的时间.

然后,在我的服务器中的每个其他核心上,我固定一个新线程并再次测量经过50次迭代读取和写入数组x中每个字节的时间.

数组x很大,可以最大限度地减少缓存效 我们想要测量CPU必须一直到RAM加载和存储的速度,而不是在缓存有帮助的时候.

我的服务器中有两个NUMA节点,因此我希望在分配了数组x的同一节点上具有亲缘关系的核心具有更快的读/写速度.我没有看到.

为什么?

也许NUMA仅与8-12核心的系统相关,正如我在别处看到的那样?

http://lse.sourceforge.net/numa/faq/

numatest.cpp

#include <numa.h>
#include <iostream>
#include <boost/thread/thread.hpp>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <pthread.h>

void pin_to_core(size_t core)
{
    cpu_set_t cpuset;
    CPU_ZERO(&cpuset);
    CPU_SET(core, &cpuset);
    pthread_setaffinity_np(pthread_self(), sizeof(cpu_set_t), &cpuset);
}

std::ostream& operator<<(std::ostream& os, const bitmask& bm)
{
    for(size_t i=0;i<bm.size;++i)
    {
        os << numa_bitmask_isbitset(&bm, i);
    }
    return os;
}

void* thread1(void** x, size_t core, size_t N, size_t M)
{
    pin_to_core(core);

    void* y …
Run Code Online (Sandbox Code Playgroud)

c++ linux performance linux-kernel numa

33
推荐指数
5
解决办法
9114
查看次数

Function.prototype.bind,以null作为参数

我对Function.prototype.bind()方法很困惑.

function playsound(raw) {        
}

function onfilechange(then, evt) {
    var reader = new FileReader();
    reader.onload = function (e) {
        console.log(e);
        then(e.target.result);
    };
    reader.onerror = function (e) {
        console.error(e);
    };
    reader.readAsArrayBuffer(evt.target.files[0]);
}


document.getElementById('file')
  .addEventListener('change', onfilechange.bind(null, playsound), false);
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释这段代码片段的作用吗?的this是空,第二个参数是playsound函数.我不太了解以下行背后的用法.

onfilechange.bind(null, playsound)
Run Code Online (Sandbox Code Playgroud)

javascript

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

得到错误"fopen":此函数或变量可能不安全.在比赛时

编译时我收到此错误:

'fopen': This function or variable may be unsafe. 
Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
Run Code Online (Sandbox Code Playgroud)

我是C++的新手并且打开CV,因此请帮我摆脱这个错误.

谢谢

void _setDestination(const char* name)
{
    if (name==NULL) {
        stream = stdout;
    }
    else {
        stream = fopen(name,"w");
        if (stream == NULL) {
            stream = stdout;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ fopen opencv

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

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

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

linux kernel jvm processor numa

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

mmap比ioremap慢

我正在开发运行Linux 2.6.37的ARM设备.我试图尽可能快地切换IO引脚.我制作了一个小内核模块和一个用户空间应用程序.我尝试了两件事:

  1. 使用直接从内核空间操作GPIO控制寄存器ioremap.
  2. mmap() GPIO控制寄存器无需缓存并从用户空间使用它们.

两种方法都有效,但第二种方法比第一种方法慢3倍(在示波器上观察).我想我禁用了所有缓存机制.

当然,我想要充分利用这两个领域:从内核空间的速度来看,用户空间的灵活性和易开发性.

有谁知道为什么mmap()可能比这慢ioremap()

这是我的代码:

内核模块代码

static int ti81xx_usmap_mmap(struct file* pFile, struct vm_area_struct* pVma)
{
  pVma->vm_flags |= VM_RESERVED;
  pVma->vm_page_prot = pgprot_noncached(pVma->vm_page_prot);

  if (io_remap_pfn_range(pVma, pVma->vm_start, pVma->vm_pgoff,
                          pVma->vm_end - pVma->vm_start, pVma->vm_page_prot))
     return -EAGAIN;

  pVma->vm_ops = &ti81xx_usmap_vm_ops;
  return 0;
}

static void ti81xx_usmap_test_gpio(void)
{
  u32* pGpIoRegisters = ioremap_nocache(TI81XX_GPIO0_BASE, 0x400);
  const u32 pin = 1 << 24;
  int i;

  /* I should use IO read/write functions instead of pointer deferencing, 
   * but portability isn't …
Run Code Online (Sandbox Code Playgroud)

linux kernel mmap gpio

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

确定特定JDK方法通常是否具有内部实现

如果没有读取OpenJDK源代码(我不反对),那么Hotspot JVM(比如英特尔)中的内部操作列表是否相当全面(或"官方" )?

例如,确定是否Math.abs()通常会将其直接转换为几个本机指令的最快方法是什么?

java jvm-hotspot

9
推荐指数
2
解决办法
2342
查看次数

无法捕获Apache Karaf客户端输出

我使用$KARAF_HOME/bin/startCentOS 6.5 在服务器模式下启动了Apache Karaf 3.0.0 .然后我想运行几个命令$KARAF_HOME/bin/client并捕获这些命令的输出,以确保命令成功运行.输出确实在我的控制台上吐出,但我永远无法将其重定向到文件中.好像Karaf没有向输出流或错误流写任何内容.我尝试了以下方法:

[apache-karaf-3.0.0]$ ./bin/start clean
[apache-karaf-3.0.0]$ ./bin/client "bundle:list"
Logging in as karaf
282 [pool-2-thread-3] WARN org.apache.sshd.client.keyverifier.AcceptAllServerKeyVerifier - Server at /0.0.0.0:8101 presented unverified key:
START LEVEL 100 , List Threshold: 50
 ID | State  | Lvl | Version                 | Name
------------------------------------------------------------------------------------
 91 | Active |  80 | 1.8.0                   | Commons Codec
 92 | Active |  80 | 2.6                     | Commons Lang
 93 | Active |  80 | 15.0.0                  | Guava: Google Core Libraries …
Run Code Online (Sandbox Code Playgroud)

osgi io-redirection apache-karaf karaf

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

哪里有C:\ Users \%USERNAME%\ AppData\Local\lxss在Windows Fall Creators Update下

一个流行的开发流程,以及Windows子系统的Linux的一个好处是使用基于Linux的开发人员工具链,即WSS中的gcc等,然后 Windows 访问这些构建工件.在早期版本的Windows 10(1703及更早版本)中,您可以通过以下方式访问Windows子系统Linux文件系统:

C:\用户\%USERNAME%\应用程序数据\本地\ lxss

这允许您从Windows访问"Linux"文件.

严格来说,你不应该修改任何文件 - 但它对读取访问很有用.

参考:https://github.com/Microsoft/BashOnWindows/issues/402#issuecomment-220585695

在Windows 10(1709)的Fall Creators Update下,这似乎已经消失了.

它在哪里消失了?显然,一个解决方法是,作为内置流水线复制的最后阶段进行的Linux到Windows使用的/mnt安装,但不被访问的文件窗户看起来这一定是许多开发者的问题.

development-environment windows-subsystem-for-linux

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

我应该如何初始化将在try/catch/finally块中使用的变量?

如果我使用try/catch/finally块我应该在哪里以及如何初始化变量?例如,假设我正在尝试使用FileStream.我想捕获创建或使用流时抛出的任何异常.然后,无论是否有任何问题,我都希望确保创建的任何流都已关闭.

所以我会做这样的事情:

        System.IO.FileStream fs;
        try
        {
            fs = new System.IO.FileStream("C:\test.txt", System.IO.FileMode.Open);
            //do something with the file stream
        }
        catch (Exception exp)
        {
            //handle exceptions
        }
        finally
        {
            //ERROR: "unassigned local variable fs"
            if (fs != null)
            {
                fs.Close();
            }
        }
Run Code Online (Sandbox Code Playgroud)

然而,这给了我在finally块中说错误unassigned local variable fs.然而,如果我改变的声明fs,以System.IO.FileStream fs = null它的工作原理.

为什么我需要显式设置fs为null?我也试过fs在try块中声明,但后来我The name fs does not exsist in the current context在finally块中得到了错误.

BTW:我知道我可以使用Using块,但我的问题是要了解try/catch/finally块的正确用法.

.net c# finally try-catch

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

POP3接收电子邮件编码C#

我使用POP3接收电子邮件.但编码错误,如电子邮件的主题"主题"转向"涓婚".中文错误,强文字时文字的内容是英文,没有错误.谁能告诉我,我该怎么做呢?代码如下:

POP3 pop = new POP3();
pop.Connect("userName", "password", "pop.126.com", 110);//smtp.126.com
pop.DownloadMessages();
for (int i = 1; i < pop.Messages.Count; i++)
{
    Email email = new Email();
    Message msg = pop.Messages[i];
    email.From = msg.From;
    email.FromName = msg.FromName;
    email.Body = msg.HTMLBody;
    email.Title = msg.Subject;
}
Run Code Online (Sandbox Code Playgroud)

c# email encoding pop3

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