VagrantでVMを起動させるとVBoxHeadlessがCPUを100%使用し続けることがある

以前、あるシステムをVagrantとVirtualBoxを使用して構築しました。
1つの物理マシン上に、多いもので20数台のVMを起動しているのですが、VMの起動時に何らかの契機(原因不明)により、正常に起動できず、他のVMも起動されないというエラーが発生することがありました。

エラーの原因となったVMのVBoxHeadlessプロセスが、CPUを100%使用し続ける状態になっており、正常に起動していないため、Vagrantが起動のTimeoutエラーを返すという現象でした。

滅多に発生する現象ではないのですが、一度発生してしまうと、VMやホストOSの再起動では解決しません。
数日前に、この現象が再発したので解決方法を探り、解決することができましたので備忘録として残しておきます。

Continue reading →

Linux上でネットワークの帯域制限と遅延を設定する

無線通信をするアプリケーションのテストのために、帯域や遅延といった、ネットワークの状態をシミュレートしたいことがあると思います。
本記事では、Linux上で、ネットワークインタフェースに対する帯域制限と遅延の設定方法を説明します。

Continue reading →

2進数リテラルと2進数ダンプ

C++14では2進数リテラルが規格に加わりました。GCCやClangではCでも使えます。というか、もともとコンパイラの独自拡張機能として実装済みだったものが規格になったみたいです。使い方はこんな感じ。

#include <stdio.h>

int main()
{
    char c = 0b01000001;

    printf("0x%X\n", c);
    printf("%c\n", c);

    return 0;
}
$ ./a.out
0x41
A

Continue reading →