AWS T 시스템 인스턴스의 CPU 크레딧 사용

2091 단어 AWSBashtech

개요


AWS의돌발 성능 실례 CPUcredit는 점차 회복되지만, 일정량 이상은 회복되지 않는다.
다음 그림은 클라우드워치의 CPUcreditBalance입니다.
이 그래프를 보면서 받을 수 있을 것 같은 CPUcredit를 버리는 게 늘 아쉬웠다.
cpucredit
따라서 이번 주제는 CPUcredit Balance의 범위 내에서 그에게 뭔가를 처리하게 하는 것이다(이번은 암호 자산 발굴이다).

설정


필요한 패키지 설치
apt install jq awscli
cludwatch가 닿을 수 있도록 IAM 스크롤 막대를 설정합니다.
다음 스크립트에서 신용카드가 50 이하일 때까지 CPU를 사용합니다
수면 시간과 절단 한도값을 적당히 조정하다.
#!/bin/bash
set -eu

cd `dirname $0`

TOKEN=`curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 60"`
instance_id=$(curl -s -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/instance-id)

function get_cpu_credit {
    echo $(aws cloudwatch \
        --output json \
        get-metric-statistics \
        --namespace AWS/EC2 \
        --metric-name CPUCreditBalance \
        --start-time `date -u -d "5 minutes ago" "+%Y-%m-%dT%H:%M:%SZ"` \
        --end-time `date -u "+%Y-%m-%dT%H:%M:%SZ"` \
        --period 300 --statistics Average \
        --dimensions Name=InstanceId,Value=$instance_id |
        jq .Datapoints[0].Average | cut -d. -f1)
}

# 何か重い処理をバックグラウンドで走らせる
./cpuminer ...(いろんなオプション) &
CPU_MINER_PID=$!

while [ $(get_cpu_credit) -gt "50" ];do
    sleep 15m
done

kill -TERM $CPU_MINER_PID
그리고 정기적으로 집행
curl -L https://git.io/Jkf7Z > /etc/systemd/system/cpuminer.service
curl -L https://git.io/Jkf7n > /etc/systemd/system/cpuminer.timer
systemctl enable cpuminer.timer
systemctl start cpuminer.timer

결실


순조롭게 진행되었다
result

좋은 웹페이지 즐겨찾기