## Name

allocate - allocate memory

## Synopsis

```**sh
$ allocate [--unit B/KiB/MiB/GiB] [--sleep-time N] [number]
```

## Description

`allocate` allocates a specific amount of virtual memory. If nothing is specified
then it will allocate 100 bytes of memory.
If `number` is specified without `unit`, it will default to `number` of bytes.
It also writes to each allocated page and then sleeps for N seconds (by default 10).
It is primarily used to test the kernel's memory management capabilities.

## Options

* `-u`, `--size-unit`: Allocation's Size Unit (Base 2 units - B, KiB, MiB or GiB)
* `-n`, `--sleep-time`: Number of seconds to sleep before freeing memory

## Examples

```sh
$ allocate 500
allocating memory (500 bytes)...
done in 0ms
writing one byte to each page of allocated memory...
done in 0ms
sleeping for 10 seconds...
0
1
2
3
4
5
6
7
8
9
done.
freeing memory...
done in 0ms

$ allocate 500 -u KiB
allocating memory (512000 bytes)...
done in 0ms
writing one byte to each page of allocated memory...
step took 1ms (46.875MiB/s)
step took 1ms (46.875MiB/s)
step took 1ms (46.875MiB/s)
step took 1ms (46.875MiB/s)
step took 1ms (46.875MiB/s)
step took 1ms (46.875MiB/s)
step took 1ms (46.875MiB/s)
step took 1ms (46.875MiB/s)
step took 1ms (46.875MiB/s)
step took 1ms (46.875MiB/s)
done in 4ms
sleeping for 10 seconds...
0
1
2
3
4
5
6
7
8
9
done.
freeing memory...
done in 0ms

$ allocate -u KiB -n 2 500
allocating memory (512000 bytes)...
done in 0ms
writing one byte to each page of allocated memory...
step took 1ms (46.875MiB/s)
step took 1ms (46.875MiB/s)
step took 1ms (46.875MiB/s)
step took 1ms (46.875MiB/s)
step took 1ms (46.875MiB/s)
step took 1ms (46.875MiB/s)
step took 1ms (46.875MiB/s)
step took 1ms (46.875MiB/s)
step took 1ms (46.875MiB/s)
step took 1ms (46.875MiB/s)
done in 0ms
sleeping for 2 seconds...
0
1
done.
freeing memory...
done in 0ms

```
