我的站点

一个系统软件工程师的随手涂鸦

Month: 十二月 2015 (Page 2 of 7)

Mesos笔记 (6)—— Task和Executor

本文参考Building Applications on Mesos

An executor is a process container that runs tasks. A task is the unit of work in Mesos.

Executor是一个container进程,而task则是运行在这个container进程中的一个单元:

 

Capture

Mesos笔记 (5)—— 资源

本文参考Building Applications on Mesos

Mesos Slave提供的通用资源包含:CPUsmemorydiskports。需要注意的是CPUs的值定义:

Capture

Slave提供资源的例子:

Capture Slave本身属性的定义:

Capture

Slave为不同的role预留资源有两种方式:
静态方式:在命令行指定不同的role获得不同的资源:

Capture

动态方式:从0.25版本开始,支持通过JSON配置文件和HTTP API方式动态预留资源。

获取资源的函数:

namespace mesos {
namespace internal {
namespace slave {

// TODO(idownes): Move this to the Containerizer interface to complete
// the delegation of containerization, i.e., external containerizers should be
// able to report the resources they can isolate.
Try<Resources> Containerizer::resources(const Flags& flags)
{
  Try<Resources> parsed = Resources::parse(
      flags.resources.getOrElse(""), flags.default_role);

  if (parsed.isError()) {
    return Error(parsed.error());
  }

  Resources resources = parsed.get();

  // NOTE: We need to check for the "cpus" string within the flag
  // because once Resources are parsed, we cannot distinguish between
  //  (1) "cpus:0", and
  //  (2) no cpus specified.
  // We only auto-detect cpus in case (2).
  // The same logic applies for the other resources!
  if (!strings::contains(flags.resources.getOrElse(""), "cpus")) {
    // No CPU specified so probe OS or resort to DEFAULT_CPUS.
    double cpus;
    Try<long> cpus_ = os::cpus();
    if (!cpus_.isSome()) {
      LOG(WARNING) << "Failed to auto-detect the number of cpus to use: '"
                   << cpus_.error()
                   << "'; defaulting to " << DEFAULT_CPUS;
      cpus = DEFAULT_CPUS;
    } else {
      cpus = cpus_.get();
    }

    resources += Resources::parse(
        "cpus",
        stringify(cpus),
        flags.default_role).get();
  }

  // Memory resource.
  ......
}

举个例子:启动Slave时参数为--resources=gpgpus:1,则Resources::parse函数会解析gpgpus资源;由于命令行没有提供CPUmemory之类的参数,需要调用os::cpus()等方法来获得。

 

Mesos笔记 (4)—— 在Mesos Slave中使用cgroup

下文引自Building Applications on Mesos

Capture 一言以蔽之,Mesos Slave应该使用cgroup来隔离资源。

Mesos笔记 (3)—— Master和Slave的responsibility

下文摘自Building Applications on Mesos

1

2

 

《Expert C programming》中C++笔记(6)

Polymorphism一个重要表现就是在程序运行时,为对象选择合适的方法来执行,通过虚函数可以达到此目的。

1

2

C++要点笔记(5)——对cout输出字符串的形象解释

下文摘自C++ Primer Plus

 

Capture

cout是一个对象,把要输出的字符串“插入”cout中,这样就会显示在out stream,也就是显示器上。

C++要点笔记(4)——头文件的命名

下文摘自C++ Primer Plus,很好地解释了<iostream.h><iostream>的区别。简而言之,在新的C++标准中,只保留了<iostream>,不再有<iostream.h>了。

Capture

 

Kubernetes笔记(7)—— 搭建”k8s on Mesos”注意事项

在本地搭建k8s on Mesos项目时,Mesos client脚本要以root身份运行。另外如果本地环境用到了proxy,一定要注意可能(不确定是否有例外,比如也许取决于你所使用的proxy或操作系统)需要把k8s或者MesosIP地址加入到no-proxy/NO_PROXY环境变量中。具体可参见下列issues
The kubernetes on Mesos can’t run successfully on the same machine
Why does “km controller-manager” think it is an invalid event?
The “km controller-manager” command doesn’t work successfully behind proxy.

 

《Expert C programming》中C++笔记(5)

重载运算符相对于函数的优势:

Capture

《Expert C programming》中C++笔记(4)

继承:

13

Page 2 of 7

Powered by WordPress & Theme by Anders Norén