小编Lee*_*eor的帖子

无法在hadoop二进制路径中找到winutils二进制文件

我在为最新的hadoop-2.2版本启动namenode时遇到以下错误.我没有在hadoop bin文件夹中找到winutils exe文件.我试过下面的命令

$ bin/hdfs namenode -format
$ sbin/yarn-daemon.sh start resourcemanager

ERROR [main] util.Shell (Shell.java:getWinUtilsPath(303)) - Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
    at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)
    at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293)
    at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)
    at org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.main(ResourceManager.java:863)
Run Code Online (Sandbox Code Playgroud)

hadoop

104
推荐指数
7
解决办法
17万
查看次数

TPL Dataflow,Post()和SendAsync()之间的功能区别是什么?

我对通过Post()或SendAsync()发送项目之间的区别感到困惑.我的理解是,在所有情况下,一旦项目到达数据块的输入缓冲区,控制权将返回到调用上下文,对吗?那为什么我需要SendAsync?如果我的假设不正确,那么我想,相反,如果使用数据块的整个想法是建立并发和异步环境,为什么有人会使用Post().

我当然理解技术上的差异,Post()返回一个bool,而SendAsync返回一个等待bool的任务.但是它有什么影响呢?何时返回bool(我理解是否确认该项是否放在数据块的队列中)会被延迟?我理解async/await并发框架的一般概念,但在这里并没有多大意义,因为除了bool之外,对传入项所做的任何操作的结果都不会返回给调用者,而是放在一个"out-queue"并转发到链接数据块或丢弃.

发送项目时两种方法之间是否存在性能差异?

c# concurrency message-passing task-parallel-library tpl-dataflow

46
推荐指数
2
解决办法
9511
查看次数

在c ++中unlink vs remove

C++中删除和取消链接函数有什么区别?

c++ unix posix erase

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

什么是参考地点?

我在理解参考的地点方面遇到了问题.任何人都可以帮助我理解它的含义和内容,

  • 空间位置参考
  • 时间地点参考

memory caching cpu-architecture cpu-cache

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

"非本地"指针是否会影响缓存性能?

据我所知,硬件预取器至少会检测并通过内存获取持续的步幅.此外,它可以监控数据访问模式,无论真正意味着什么.这让我想知道,硬件预取程序是否会根据存储在内存中的实际数据做出决定,还是纯粹基于程序所展示的行为?

我问的原因是因为我偶尔会使用"非本地"指针作为指针.一个简单的例子就是预分配的东西数组,以及索引这个数组而不是指针的小整数.如果我需要存储大量这样的"指针",内存的节省可以快速增加,并通过使用更少的内存间接提高缓存性能.

但据我所知,这可能会干扰硬件预取器的工作方式.或不!

我可以想象,现实与否,预取单元检查进入L1缓存的缓存行以获取本机指针地址并开始将它们提取到L2或某些此类事物中.在那种情况下,我拯救记忆的聪明伎俩突然变得不那么聪明了.

那么,现代硬件预取器的作用是什么呢?他们可以被"非本地"指针绊倒吗?

c c++ optimization prefetch cpu-cache

17
推荐指数
2
解决办法
608
查看次数

使用cachegrind和callgrind进行不同的读写计数

我正在使用Cachegrind,Callgrind和Gem5进行一些实验.我注意到一些访问被计为cachegrind的读取,如callgrind的写入以及gem5的读取和写入.

我们来看一个非常简单的例子:

int main() {
    int i, l;

    for (i = 0; i < 1000; i++) {
        l++;
        l++;
        l++;
        l++;
        l++;
        l++;
        l++;
        l++;
        l++;
        l++;
        ... (100 times)
     }
 }
Run Code Online (Sandbox Code Playgroud)

我编译:

gcc ex.c --static -o ex

所以基本上,根据asm文件,addl $1, -8(%rbp)执行100,000次.由于它既是读取也是写入,我期待100k读取和100k写入.但是,cachegrind只将它们计为read,而callgrind只计为write.

 % valgrind --tool=cachegrind --I1=512,8,64 --D1=512,8,64
--L2=16384,8,64 ./ex
==15356== Cachegrind, a cache and branch-prediction profiler
==15356== Copyright (C) 2002-2012, and GNU GPL'd, by Nicholas Nethercote et al.
==15356== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info …
Run Code Online (Sandbox Code Playgroud)

c assembly callgrind cachegrind gem5

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

使用gdb计算机器指令

我需要根据x86机器指令数来估计程序中某些热点的确切起始位置(以便稍后可以在某个仿真器/模拟器中运行).有没有办法使用gdb来计算执行到断点的机器指令的数量?

当然还有其他选择,我可以使用仿真/二进制检测工具(如Pin),并在计算指令时跟踪运行,但这需要在我工作的每个平台上安装此工具 - 并非总是可行.我需要一些可以在任何Linux机器上使用的工具.

用GDB,我想它也可以运行stepi X,直到我们遇到断点过大的进步是某种粗粒搜索,然后降低分辨率重复,但是这将是极为缓慢.还有另一种方法吗?

x86 trace gdb

14
推荐指数
3
解决办法
2807
查看次数

系统上的缓存大小估算?

我从这个链接(https://gist.github.com/jiewmeng/3787223)获得了这个程序.我一直在网上搜索,以便更好地理解处理器缓存(L1和L2).我想成为能够编写一个程序,让我能够猜测我的新笔记本电脑上L1和L2缓存的大小.(仅用于学习目的.我知道我可以检查规格.)

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define KB 1024
#define MB 1024 * 1024

int main() {
    unsigned int steps = 256 * 1024 * 1024;
    static int arr[4 * 1024 * 1024];
    int lengthMod;
    unsigned int i;
    double timeTaken;
    clock_t start;
    int sizes[] = {
        1 * KB, 4 * KB, 8 * KB, 16 * KB, 32 * KB, 64 * KB, 128 * KB, 256 * KB,
        512 * KB, 1 * MB, 1.5 …
Run Code Online (Sandbox Code Playgroud)

c performance caching cpu-cache

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

intel core i7的缓存规范

我正在为intel core i7构建缓存模拟器,但很难找到L1,L2和L3缓存(共享)的详细规范.我需要Cacheblock大小,缓存大小,关联性等等......有人能指出我的好方向吗?

caching intel cpu-architecture cpu-cache

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

循环平铺.如何选择块大小?

我正在尝试学习循环优化.我发现循环平铺有助于使数组循环更快.我尝试使用下面给出的两个代码块,有或没有循环阻塞,并测量两者的时间.我大部分时间都没有发现明显的差异.我测试了不同的块大小,但我不知道如何选择块大小.如果我的方向错了,请帮助我.实际上我发现没有块的循环可以更快地工作.

一个.随着阻止

int max = 1000000;
int B = 100;
for (i = 0; i < max; i += B)
{
     for (j = i; j < (i + B); j++)
     {
         array[j] = 0;
     }
 }
Run Code Online (Sandbox Code Playgroud)

湾 没有阻止

for (i = 0; i < max; i++)
{
    array[i] = 0;
 }
Run Code Online (Sandbox Code Playgroud)

所用时间:阻塞:经过时间 - 6997000 Nano Secs

没有阻塞经过的时间 - 6097000 Nano Secs

c optimization performance loops cpu-cache

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