Before reading: mining any crypto currency in Azure is a verry bad idea! This article explains why
Update: posted a new blog about optimizing your miner here.
Update 2: I have reports that this is being actively blocked by Azure. This was always intended for testing purposes not for actual production mining
Lately my colleagues have gone wild over this 'better than Blockchain' crypto currency named Ethereum (Ether). So here are my findings on how you can mine it in Azure.
What is Ethereum?
Like Bitcoin Ethereum is a crypto currency. This means you can make secure payments to anyone in the world, without a centralized bank to process the payment. Because there is no single point of failure and the encrypted nature of the transactions this is a very secure form of payment.
Difference with Blockchain:
Ethereum is not only a public crypto currency, it is also offers you the possibility to create your own private chain. This makes it possible to easily make a secure and trustable system of transactions with your own group of people / entities.
It is way more than a currency. Ethereum allows you to write Smart Contract. These contracts can describe anything from a voting system or auction system to a custom payment model. Because each transaction is stored in the public or private chain, these can not be altered later.
How to setup a GPU miner in Azure
A cool Azure feature since the beginning of late 2016 is GPU Virtual Machines, these offer both M60 and K80 NVIDIA GPU's. Since that moment I have always wanted to use it but never got to it until now.
So, let's get started. As OS I am using Ubuntu 16.04, because this OS does not have the proper drivers for GPU mining. We need to install these - check the Microsoft docs here for the latest commands to setup the drivers.
After installing let's install the mining software like this:
#Add the ethereum repository and update apt-get sudo apt-get install software-properties-common sudo add-apt-repository ppa:ethereum/ethereum sudo apt-get update #Install the Ethereum resources sudo apt-get install ethereum ethminer geth
Making a hard decisions
So before you start mining, you have to make the decision if you want to mine on your own or join a 'Pool'. When you join a Pool, you will be mining together with other people in the Pool on a certain block. The chance you will find a block will be higher than when you mine solo. The disadvantage is that you will pay a fee to the pool, this is mostly 1%-2% of your revenue, so I think it is worth this.
Let me show you how to get started with pool mining. In this example I am using a pool named 'Dwarfpool', but there are tons of others out there.
# Start mining # -G for GPU mining which we want # -F for farm mining with the end point of your farm ethminer -G -F http://eth-eu.dwarfpool.com:80/YOUR_WALLET # Example (my wallet for donations ;), tnx) ethminer -G -F http://eth-eu.dwarfpool.com:80/0x8e9137Fa982C0Af6EF94D0f7A15dafaCB6EAb725
Cool, you are mining!!!
But wait a minute...
It's cool and all, but......
Was it worth it?
The big questions obviously will be whether it was worth it, how much did I spend and how much did I make? Before answering, let me show you the possible GPU machines:
|VM name||CPU Cores||RAM||GPU|
While using a NV6 Machine with a single GPU I got an average of 22 Mega Hashes per second, at the time of writing according to cryptocompare.com that yields me $4.90 per day, given that the VM costs about $1.37 per hour, so $32.88 per day. This unfortunately is not useful at all :(.
Of course, this leads everyone to the following question:
"Are these instances with multiple GPU's effective?"
How do GPU's scale when mining Ethereum?
Most miners do have a multi GPU setup, so I guess this would work, but the main question will be: "will it work so well that it becomes profitable?".
Let's first look at the raw performance of each instance here; it looks to be scaling quite well.
Finally let's take a look at it with numbers:
|Model||mhs||Price per hour||Eth per hour in $||Gain/ loss per hour||VM price coverd|
Looking at the table, only 17% of the price is covered at best. This means that mining in Azure for the public Ethereum chain is not worth it.
If you have a private chain and you need to have a lot of power behind it, this is a great solution.
Why are you talking about CPU, you might ask? While biking home, I wanted to finish this article by writing that it is such a waste of resources when you have up to 24 cores and you are not even using one fully. So I thought: why not spin up another
ethminer process for all the CPU resources?
So I did with forcing the miner to use CPU only like this:
ethminer -C -F http://eth-eu.dwarfpool.com:80/0x8e9137Fa982C0Af6EF94D0f7A15dafaCB6EAb725
Cool! When I look at my
htop, all CPU cores where used for the full 100%. So now I'm done, right?
Unfortunately, not completely. When I was looking at my GPU utilization which used to be roughly 100%. Now, it had dropped to 70%-80%, which sucked!
Therefore I changed the priority of the GPU process via
renice more info about that here, now my cpu is running at full speed and all my cores are as well.
Result: almost none. The CPU's were powerful enough to submit any jobs, so the number of mhs of the rig did not improve at all :(.