[feat]: change erasure coding default block size from 10MiB to 1MiB (#11721)
major performance improvements in range GETs to avoid large
read amplification when ranges are tiny and random
```
-------------------
Operation: GET
Operations: 142014 -> 339421
Duration: 4m50s -> 4m56s
* Average: +139.41% (+1177.3 MiB/s) throughput, +139.11% (+658.4) obj/s
* Fastest: +125.24% (+1207.4 MiB/s) throughput, +132.32% (+612.9) obj/s
* 50% Median: +139.06% (+1175.7 MiB/s) throughput, +133.46% (+660.9) obj/s
* Slowest: +203.40% (+1267.9 MiB/s) throughput, +198.59% (+753.5) obj/s
```
TTFB from 10MiB BlockSize
```
* First Access TTFB: Avg: 81ms, Median: 61ms, Best: 20ms, Worst: 2.056s
```
TTFB from 1MiB BlockSize
```
* First Access TTFB: Avg: 22ms, Median: 21ms, Best: 8ms, Worst: 91ms
```
Full object reads however do see a slight change which won't be
noticeable in real world, so not doing any comparisons
TTFB still had improvements with full object reads with 1MiB
```
* First Access TTFB: Avg: 68ms, Median: 35ms, Best: 11ms, Worst: 1.16s
```
v/s
TTFB with 10MiB
```
* First Access TTFB: Avg: 388ms, Median: 98ms, Best: 20ms, Worst: 4.156s
```
This change should affect all new uploads, previous uploads should
continue to work with business as usual. But dramatic improvements can
be seen with these changes.
2021-03-06 17:09:34 -05:00
|
|
|
FROM golang:1.16-alpine as builder
|
2016-05-04 20:07:19 -04:00
|
|
|
|
2019-04-09 14:39:42 -04:00
|
|
|
LABEL maintainer="MinIO Inc <dev@min.io>"
|
2017-05-22 10:05:39 -04:00
|
|
|
|
2017-03-07 18:15:05 -05:00
|
|
|
ENV GOPATH /go
|
|
|
|
ENV CGO_ENABLED 0
|
2019-04-04 13:13:33 -04:00
|
|
|
ENV GO111MODULE on
|
2018-12-21 20:06:48 -05:00
|
|
|
|
2021-06-03 11:16:06 -04:00
|
|
|
COPY . /go/minio/
|
|
|
|
COPY browser /go/minio/browser
|
|
|
|
|
|
|
|
WORKDIR /go/minio/
|
|
|
|
|
|
|
|
RUN apk add --no-cache git && go install -v -ldflags "$(go run buildscripts/gen-ldflags.go)"
|
2018-12-21 20:06:48 -05:00
|
|
|
|
2020-12-08 14:14:06 -05:00
|
|
|
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.3
|
2018-12-21 20:06:48 -05:00
|
|
|
|
2021-04-29 13:55:05 -04:00
|
|
|
ENV MINIO_ACCESS_KEY_FILE=access_key \
|
|
|
|
MINIO_SECRET_KEY_FILE=secret_key \
|
|
|
|
MINIO_ROOT_USER_FILE=access_key \
|
2021-01-05 13:22:57 -05:00
|
|
|
MINIO_ROOT_PASSWORD_FILE=secret_key \
|
2021-04-22 11:45:30 -04:00
|
|
|
MINIO_KMS_SECRET_KEY_FILE=kms_master_key \
|
2020-10-25 01:39:44 -04:00
|
|
|
MINIO_UPDATE_MINISIGN_PUBKEY="RWTx5Zr1tiHQLwG9keckT0c45M3AGeHD6IvimQHpyRywVWGbP1aVSGav"
|
2016-05-04 20:07:19 -04:00
|
|
|
|
2018-12-21 20:06:48 -05:00
|
|
|
EXPOSE 9000
|
2016-11-04 21:25:30 -04:00
|
|
|
|
2020-06-22 11:26:40 -04:00
|
|
|
COPY --from=builder /go/bin/minio /usr/bin/minio
|
2020-12-08 14:14:06 -05:00
|
|
|
COPY --from=builder /go/minio/CREDITS /licenses/CREDITS
|
|
|
|
COPY --from=builder /go/minio/LICENSE /licenses/LICENSE
|
2020-06-22 11:26:40 -04:00
|
|
|
COPY --from=builder /go/minio/dockerscripts/docker-entrypoint.sh /usr/bin/
|
2017-10-05 16:52:57 -04:00
|
|
|
|
2017-03-07 18:15:05 -05:00
|
|
|
RUN \
|
2020-12-08 14:14:06 -05:00
|
|
|
microdnf update --nodocs && \
|
2021-06-03 11:16:06 -04:00
|
|
|
microdnf install curl ca-certificates shadow-utils util-linux iproute iputils --nodocs && \
|
|
|
|
microdnf clean all
|
2017-04-08 04:43:40 -04:00
|
|
|
|
|
|
|
ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"]
|
|
|
|
|
2018-03-13 21:29:27 -04:00
|
|
|
VOLUME ["/data"]
|
2017-04-08 04:43:40 -04:00
|
|
|
|
|
|
|
CMD ["minio"]
|