Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provider delay experiment redux #66

Merged
merged 7 commits into from
Sep 6, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions docker/from-git-repo/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/bash
if [ $# -ne 3 ]; then
echo "Expecting 3 args"
echo "./build.sh <REPO> <BRANCH> <TAG_NAME>"
exit 1
fi

set -euo pipefail
# set -x

DOCKER_REPO=147263665150.dkr.ecr.eu-west-1.amazonaws.com
GIT_REPO=$1
BRANCH_NAME=$2
KUBO_IMAGE_TAG=$3
KUBO_IMAGE_NAME=thunderdome:"$KUBO_IMAGE_TAG"
KUBO_IMAGE=$DOCKER_REPO/$KUBO_IMAGE_NAME

WORKDIR=$(mktemp -d)
if [ ! -e "$WORKDIR" ]; then
echo >&2 "Failed to create temp directory"
exit 1
fi

trap 'rm -rf "$WORKDIR"' EXIT

echo "Using work directory $WORKDIR"
cd "$WORKDIR"
git clone "$GIT_REPO" kubo

cd kubo
git switch "$BRANCH_NAME"
docker build -t "$KUBO_IMAGE_NAME" .

aws ecr get-login-password --region eu-west-1 | docker login --username AWS --password-stdin $DOCKER_REPO

docker tag "$KUBO_IMAGE_NAME" "$KUBO_IMAGE"
docker push "$KUBO_IMAGE"
5 changes: 3 additions & 2 deletions docker/from-kubo-image-tag/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
ARG TAG
ARG REPO_NAME
FROM ipfs/$REPO_NAME:$TAG
FROM $REPO_NAME:$TAG

# Create the init scripts directory (needed for pre 0.13 releases)
RUN mkdir -p /container-init.d \
Expand All @@ -16,4 +16,5 @@ RUN chmod 0555 /usr/local/bin/container_init_run
ADD /container-init.d/* /container-init.d/
RUN chmod a+x /container-init.d/*

EXPOSE 8080
EXPOSE 8080
CMD ["daemon", "--enable-gc", "--migrate=true", "--agent-version-suffix=docker"]
5 changes: 3 additions & 2 deletions docker/from-kubo-image-tag/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,18 @@
if [ -z "$1" ]; then
echo "Need to pass TAG, eg"
echo "./build.sh v0.15.0"
echo "You can also set REPO_NAME to override that, ipfs/kubo is the default"
exit
fi
if [ -z "$REPO_NAME" ]; then
REPO_NAME=kubo
REPO_NAME=ipfs/kubo
fi
set -euo pipefail
TAG=$1
IMAGE_NAME=thunderdome:kubo-$TAG
ECR_REPO=147263665150.dkr.ecr.eu-west-1.amazonaws.com
docker build -t "$IMAGE_NAME" --build-arg TAG="$TAG" --build-arg REPO_NAME="$REPO_NAME" .
aws ecr get-login-password --region eu-west-1 | docker login --username AWS --password-stdin "$ECR_REPO"
docker login -u AWS -p $(aws ecr get-login-password --region eu-west-1) "$ECR_REPO"
docker tag "$IMAGE_NAME" "$ECR_REPO"/"$IMAGE_NAME"
docker push "$ECR_REPO"/"$IMAGE_NAME"
echo "$ECR_REPO"/"$IMAGE_NAME"
2 changes: 1 addition & 1 deletion docker/from-kubo-image-tag/build_all.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ go_ipfs_releases=(
)


export REPO_NAME=go-ipfs
export REPO_NAME=ipfs/go-ipfs
for release in "${go_ipfs_releases[@]}"; do
./build.sh "$release"
done
4 changes: 4 additions & 0 deletions docker/providerdelay/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
ARG SOURCE_TAG
FROM 147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:$SOURCE_TAG
ADD /container-init.d/* /container-init.d/
RUN chmod a+x /container-init.d/*
21 changes: 21 additions & 0 deletions docker/providerdelay/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/bin/bash
# Build from git repo
set -euo pipefail
TAG_NAME=providerdelay
../from-git-repo/build.sh https://github.com/iand/go-ipfs.git feat/remove-provider-search-delay $TAG_NAME

# Add thunderdome config
cd ../from-kubo-image-tag
export REPO_NAME=147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome
./build.sh $TAG_NAME
cd -
## (creates a kubo-"$TAG_NAME" image)

# Build in this dir
SOURCE_TAG=kubo-"$TAG_NAME"
FINAL_TAG=kubo-providerdelay-from-env
docker build -t "$FINAL_TAG" --build-arg SOURCE_TAG="$SOURCE_TAG" .
FINAL_REMOTE_TAG="$REPO_NAME":"$FINAL_TAG"
docker tag "$FINAL_TAG" "$FINAL_REMOTE_TAG"
docker push "$FINAL_REMOTE_TAG"
echo "$FINAL_REMOTE_TAG"
6 changes: 6 additions & 0 deletions docker/providerdelay/container-init.d/set-providerdelay.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
if [ -z "$SEARCH_DELAY" ]; then
echo "Need to set SEARCH_DELAY, eg 50ms"
exit 1
fi
echo "setting Internal.Bitswap.ProviderSearchDelay to $SEARCH_DELAY"
ipfs config Internal.Bitswap.ProviderSearchDelay "$SEARCH_DELAY"
79 changes: 79 additions & 0 deletions tf/experiment-providerdelay.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
module "providerdelay" {
source = "./modules/experiment"
name = "providerdelay"

ecs_cluster_id = module.ecs-asg.cluster_id
vpc_subnets = module.vpc.public_subnets
target_security_groups = [aws_security_group.target.id]
dealgood_security_groups = [aws_security_group.dealgood.id]
execution_role_arn = aws_iam_role.ecsTaskExecutionRole.arn
dealgood_task_role_arn = aws_iam_role.dealgood.arn
log_group_name = aws_cloudwatch_log_group.logs.name
aws_service_discovery_private_dns_namespace_id = aws_service_discovery_private_dns_namespace.main.id
ssm_exec_policy_arn = aws_iam_policy.ssm-exec.arn

grafana_secrets = [
{ name = "GRAFANA_USER", valueFrom = "${data.aws_secretsmanager_secret.grafana-push-secret.arn}:username::" },
{ name = "GRAFANA_PASS", valueFrom = "${data.aws_secretsmanager_secret.grafana-push-secret.arn}:password::" }
]

dealgood_secrets = [
{ name = "DEALGOOD_LOKI_USERNAME", valueFrom = "${data.aws_secretsmanager_secret.dealgood-loki-secret.arn}:username::" },
{ name = "DEALGOOD_LOKI_PASSWORD", valueFrom = "${data.aws_secretsmanager_secret.dealgood-loki-secret.arn}:password::" },
]

shared_env = [
{ name = "IPFS_PROFILE", value = "server" },
]

targets = {
"0ms" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-providerdelay-from-env"
environment = [
{ name = "SEARCH_DELAY", value = "0" }
]
}
"20ms" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-providerdelay-from-env"
environment = [
{ name = "SEARCH_DELAY", value = "20ms" }
]
}
"50ms" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-providerdelay-from-env"
environment = [
{ name = "SEARCH_DELAY", value = "50ms" }
]
}
"100ms" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-providerdelay-from-env"
environment = [
{ name = "SEARCH_DELAY", value = "100ms" }
]
}
"200ms" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-providerdelay-from-env"
environment = [
{ name = "SEARCH_DELAY", value = "200ms" }
]
}
"500ms" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-providerdelay-from-env"
environment = [
{ name = "SEARCH_DELAY", value = "500ms" }
]
}
"750ms" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-providerdelay-from-env"
environment = [
{ name = "SEARCH_DELAY", value = "750ms" }
]
}
"1000ms" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-providerdelay-from-env"
environment = [
{ name = "SEARCH_DELAY", value = "1000ms" }
]
}
}
}
63 changes: 63 additions & 0 deletions tf/experiment-releases.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
module "releases" {
source = "./modules/experiment"
name = "releases"

ecs_cluster_id = module.ecs-asg.cluster_id
vpc_subnets = module.vpc.public_subnets
target_security_groups = [aws_security_group.target.id]
dealgood_security_groups = [aws_security_group.dealgood.id]
execution_role_arn = aws_iam_role.ecsTaskExecutionRole.arn
dealgood_task_role_arn = aws_iam_role.dealgood.arn
log_group_name = aws_cloudwatch_log_group.logs.name
aws_service_discovery_private_dns_namespace_id = aws_service_discovery_private_dns_namespace.main.id
ssm_exec_policy_arn = aws_iam_policy.ssm-exec.arn

grafana_secrets = [
{ name = "GRAFANA_USER", valueFrom = "${data.aws_secretsmanager_secret.grafana-push-secret.arn}:username::" },
{ name = "GRAFANA_PASS", valueFrom = "${data.aws_secretsmanager_secret.grafana-push-secret.arn}:password::" }
]

dealgood_secrets = [
{ name = "DEALGOOD_LOKI_USERNAME", valueFrom = "${data.aws_secretsmanager_secret.dealgood-loki-secret.arn}:username::" },
{ name = "DEALGOOD_LOKI_PASSWORD", valueFrom = "${data.aws_secretsmanager_secret.dealgood-loki-secret.arn}:password::" },
]

shared_env = [
{ name = "IPFS_PROFILE", value = "server" },
]

targets = {
"v0_08_0" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-v0.8.0"
environment = []
},
"v0_09_1" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-v0.9.1"
environment = []
},
"v0_10_0" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-v0.10.0"
environment = []
},
"v0_11_0" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-v0.11.0"
environment = []
},
"v0_12_2" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-v0.12.2"
environment = []
},
"v0_13_1" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-v0.13.1"
environment = []
},
"v0_14_0" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-v0.14.0"
environment = []
},
"v0_15_0" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-v0.15.0"
environment = []
}
}
}
72 changes: 72 additions & 0 deletions tf/experiment-reposize.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
module "reposize" {
source = "./modules/experiment"
name = "reposize"

ecs_cluster_id = module.ecs-asg.cluster_id
vpc_subnets = module.vpc.public_subnets
target_security_groups = [aws_security_group.target.id]
dealgood_security_groups = [aws_security_group.dealgood.id]
execution_role_arn = aws_iam_role.ecsTaskExecutionRole.arn
dealgood_task_role_arn = aws_iam_role.dealgood.arn
log_group_name = aws_cloudwatch_log_group.logs.name
aws_service_discovery_private_dns_namespace_id = aws_service_discovery_private_dns_namespace.main.id
ssm_exec_policy_arn = aws_iam_policy.ssm-exec.arn

grafana_secrets = [
{ name = "GRAFANA_USER", valueFrom = "${data.aws_secretsmanager_secret.grafana-push-secret.arn}:username::" },
{ name = "GRAFANA_PASS", valueFrom = "${data.aws_secretsmanager_secret.grafana-push-secret.arn}:password::" }
]

dealgood_secrets = [
{ name = "DEALGOOD_LOKI_USERNAME", valueFrom = "${data.aws_secretsmanager_secret.dealgood-loki-secret.arn}:username::" },
{ name = "DEALGOOD_LOKI_PASSWORD", valueFrom = "${data.aws_secretsmanager_secret.dealgood-loki-secret.arn}:password::" },
]

shared_env = [
{ name = "IPFS_PROFILE", value = "server" },
]

targets = {
"005GB" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-v0.15.0-reposize"
environment = [
{ name = "REPO_SIZE", value = "5GB" }
]
}

"010GB" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-v0.15.0-reposize"
environment = [
{ name = "REPO_SIZE", value = "10GB" }
]
}

"025GB" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-v0.15.0-reposize"
environment = [
{ name = "REPO_SIZE", value = "25GB" }
]
}

"050GB" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-v0.15.0-reposize"
environment = [
{ name = "REPO_SIZE", value = "50GB" }
]
}

"075GB" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-v0.15.0-reposize"
environment = [
{ name = "REPO_SIZE", value = "75GB" }
]
}

"100GB" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-v0.15.0-reposize"
environment = [
{ name = "REPO_SIZE", value = "100GB" }
]
},
}
}
39 changes: 39 additions & 0 deletions tf/experiment-tweedles.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
module "tweedles" {
source = "./modules/experiment"
name = "tweedles"

ecs_cluster_id = module.ecs-asg.cluster_id
vpc_subnets = module.vpc.public_subnets
target_security_groups = [aws_security_group.target.id]
dealgood_security_groups = [aws_security_group.dealgood.id]
execution_role_arn = aws_iam_role.ecsTaskExecutionRole.arn
dealgood_task_role_arn = aws_iam_role.dealgood.arn
log_group_name = aws_cloudwatch_log_group.logs.name
aws_service_discovery_private_dns_namespace_id = aws_service_discovery_private_dns_namespace.main.id
ssm_exec_policy_arn = aws_iam_policy.ssm-exec.arn

grafana_secrets = [
{ name = "GRAFANA_USER", valueFrom = "${data.aws_secretsmanager_secret.grafana-push-secret.arn}:username::" },
{ name = "GRAFANA_PASS", valueFrom = "${data.aws_secretsmanager_secret.grafana-push-secret.arn}:password::" }
]

dealgood_secrets = [
{ name = "DEALGOOD_LOKI_USERNAME", valueFrom = "${data.aws_secretsmanager_secret.dealgood-loki-secret.arn}:username::" },
{ name = "DEALGOOD_LOKI_PASSWORD", valueFrom = "${data.aws_secretsmanager_secret.dealgood-loki-secret.arn}:password::" },
]

shared_env = [
{ name = "IPFS_PROFILE", value = "server" },
]

targets = {
"dee" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-v0.15.0"
environment = []
},
"dum" = {
image = "147263665150.dkr.ecr.eu-west-1.amazonaws.com/thunderdome:kubo-v0.15.0"
environment = []
}
}
}
Loading