小编Nan*_*iao的帖子

如何理解Mesos中的CPU分配?

我正在阅读在Mesos上构建应用程序,并遇到以下语句:

cpus
此资源表示可用的CPU核心数.任务可以使用CPU的小数部分 - 这是可能的,因为Mesos从属服务器使用CPU共享,而不是保留特定的CPU.这意味着,如果保留1.5 cpus,则允许您的进程每秒使用总共1.5秒的CPU时间.这可能意味着,在单个执行器中,两个进程每秒获得750毫秒的CPU时间,或者一个进程获得1秒的CPU时间,另一个进程在给定的秒内获得500毫秒的CPU时间.使用CPU共享的好处是,如果某个任务能够利用超过其共享的任务,并且没有其他任务会使用其他空闲的CPU,则第一个任务可能会使用超过其共享的任务.因此,保留的cpus可为任务提供可保证的最小CPU时间 - 如果有额外容量可用,则允许使用更多.

我无法理解" if you have 1.5 cpus reserved, your processes will be allowed to use a total of 1.5 seconds of CPU time each second.".它如何每秒使用1.5几秒钟CPU

mesos

12
推荐指数
2
解决办法
6346
查看次数

如何理解"/ proc/[pid]/stack"?

根据proc手册:

/ proc/[pid]/stack(自Linux 2.6.29起)

此文件提供此进程内核堆栈中函数调用的符号跟踪.仅当内核使用CONFIG_STACKTRACE配置选项构建时,才会提供此文件.

所以我写了一个测试程序:

#include <stdio.h>
#include <sys/wait.h>
#include <unistd.h>
#include <pthread.h>

void *thread_func(void *p_arg)
{
        pid_t pid = fork();
        if (pid > 0) {
            wait(NULL);
            return 0;
        } else if (pid == 0) {
            sleep(1000);
            return 0;
        }
        return NULL;
}
int main(void)
{
        pthread_t t1, t2;

        pthread_create(&t1, NULL, thread_func, "Thread 1");
        pthread_create(&t2, NULL, thread_func, "Thread 2");

        sleep(1000);
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

运行后,用于pstack检查进度的线程:

linux-uibj:~ # pstack 24976
Thread 3 (Thread 0x7fd6e4ed5700 (LWP 24977)):
#0 …
Run Code Online (Sandbox Code Playgroud)

linux multithreading pthreads linux-kernel

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

为什么docker容器提示"权限被拒绝"?

我使用以下命令来运行docker容器,并将目录从host(/root/database)映射到container(/tmp/install/database):

# docker run -it --name oracle_install -v /root/database:/tmp/install/database bofm/oracle12c:preinstall bash
Run Code Online (Sandbox Code Playgroud)

但是在容器中,我发现我不能ls用来列出内容/tmp/install/database/但是我root拥有所有特权:

[root@77eb235aceac /]# cd /tmp/install/database/
[root@77eb235aceac database]# ls
ls: cannot open directory .: Permission denied
[root@77eb235aceac database]# id
uid=0(root) gid=0(root) groups=0(root)
[root@77eb235aceac database]# cd ..
[root@77eb235aceac install]# ls -alt
......
drwxr-xr-x. 7 root root  4096 Jul  7  2014 database
Run Code Online (Sandbox Code Playgroud)

我检查/root/database主机,一切似乎都好:

[root@localhost ~]# ls -lt
......
drwxr-xr-x.  7 root root       4096 Jul  7  2014 database
Run Code Online (Sandbox Code Playgroud)

为什么docker容器提示"权限被拒绝"?

更新: …

linux permissions permission-denied user-permissions docker

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

如何通过追加扩大切片?容量总是翻倍?

append切片时,如果需要,可以放大切片.因为规范没有指定算法,我很好奇.

我试图append在Go源代码中找到实现,但找不到它.

任何人都可以解释指定的放大切片算法吗?容量总是翻倍?或者任何人都可以提供源代码的位置append?我可以自己检查一下.

go

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

"docker/swarm"和"docker/swarmkit"之间的关系

我已经熟悉docker/swarm,但发现有一个"新"项目:docker/swarmkit.但遗憾的是,在阅读完README后,我仍然无法弄清楚它的功能是什么docker/swarmkit.可以anyoone帮助制定之间的关系docker/swarmdocker/swarmkit?为什么docker/swarmkit出生?

docker docker-swarm

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

为什么golang编译器认为变量已声明但未使用?

我是golang的新手,我写了一个测试io包的程序:

func main() {
    readers := []io.Reader{
         strings.NewReader("from string reader"),
         bytes.NewBufferString("from bytes reader"),
    }

    reader := io.MultiReader(readers...)
    data := make([]byte, 1024)

    var err error
    //var n int

    for err != io.EOF {
        n, err := reader.Read(data)
        fmt.Printf("%s\n", data[:n])
    }
    os.Exit(0)
}
Run Code Online (Sandbox Code Playgroud)

编译错误是"错误声明并且未使用".但我想我已经使用了错误的声明.为什么编译器输出此错误?

go

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

如何理解"C++允许sizeof(char*)!= sizeof(int*)"?

我读这个帖子这是关系到charbyte,并遇到了下面的话:

一个int*仍然可以被实现为单个硬件指针,因为C++允许sizeof(char*) != sizeof(int*).

如何理解'C++允许sizeof(char*) != sizeof(int*)'?

c++ pointers language-lawyer

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

为什么一些docker镜像在运行时需要命令?

我发现在使用时docker run我有时不需要添加"命令",而有时候"命令"是必须的.例如,在运行ubuntu映像时,不需要命令:

# docker run ubuntu
#
Run Code Online (Sandbox Code Playgroud)

在运行时mstormo/suse:

# docker run mstormo/suse
Error response from daemon: No command specified
# docker run mstormo/suse bash
#
Run Code Online (Sandbox Code Playgroud)

那么这与指定的图像有关吗?

docker

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

在Rust中"(1..4)"和"{1..4}"迭代之间是否有任何不同的语义?

我找到了使用 (1..4)

fn main() {
    for v in (1..4) {
        println!("{}", v);
    }
}
Run Code Online (Sandbox Code Playgroud)

{1..4}

fn main() {
    for v in {1..4} {
        println!("{}", v);
    }
}
Run Code Online (Sandbox Code Playgroud)

获得相同的结果." (1..4)"和" {1..4}"迭代之间是否有任何不同的语义?

rust

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

为什么Rust在"impl"关键字后需要泛型类型声明?

定义泛型类型的方法需要在以下后面添加泛型类型impl:

struct GenericVal<T>(T,);
impl <T> GenericVal<T> {}
Run Code Online (Sandbox Code Playgroud)

我觉得删除<T>似乎没问题:

struct GenericVal<T>(T,);
impl GenericVal<T> {}
Run Code Online (Sandbox Code Playgroud)

有什么特别的考虑吗?

rust

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