Recently I entered into the Azure’s HPC world and thought to
share something, which I learnt from my experience as a beginner. Today is my
first step towards the Azure’s HPC. I
just downloaded the sample service and followed the configuration instructions.
But even after following those, I faced few difficulties during this journey. So,
here I am sharing that experience only. Hope it will be useful for all newbies.
I feel that below are the few points, which are directly
related to the application performance.
1) Affinity Group – While working on cloud, the
first thing comes into mind is performance and throughput. And in order to gain
better throughput and performance, one need to make sure that all our services
and storage accounts hosted on the cloud are located in proximity, which will
reduce data transfer time. So, to bring all the services and storage closer, we
can keep all of them in a group. And in Azure’s term, this group is called as
Affinity Group. So, creating an affinity group will increase data transfer
speed till very high extent. So, it is always a good practice to create our own
affinity group as a first and foremost step.
2) Storage Account and Affinity Group – Whenever
HPC is configured using sample service, one storage account is being created automatically.
This storage account is created
anywhere, irrespective of the affinity group created. One important point to
note here is to; check the affinity group of this newly created storage
account. If it is in the same affinity group which we created for our app, then
great, we need not to do anything :).
But in case, if it is not lying in the same
group, then we have to bring that storage account into our already created
affinity group. As of today, there is no direct way to bring the storage
account into our desired affinity group or let’s say, there is no such way for
storage account to switch between affinity groups. The only solution available
is, delete the automatically created storage account (newly created one) and
create new storage account. While creating new storage account from scratch, we
can easily assign the desired affinity group and at the same time, one can skip
the statements in the Azure Sample Service code where it tries to create the
storage account.
3) Location – While configuring HPC scheduler, the
following steps are accomplished:
- Selection of location (i.e. South East Asia)
- HPC scheduler randomly selects one of the configured
database server located in the above selected location (here it is South East
Asia)
- Once the database server is selected, next step
is to supply credentials to access/create the database
- Now the issue here is, how to get user
credentials for this randomly selected database server.
To
overcome this issue, as of today, the only solution possible is to modify the
source code in the sample service and mentioned the name of the desired
database server for which user credentials are known.
More info - Whenever someone talks about HPC scheduler, the first thing
which hits our mind is Head Node and the Compute nodes. Head node plays a vital
role, while talking about Windows Azure HPC Scheduler. One can learn more about
HPC Scheduler at
http://msdn.microsoft.com/en-us/library/windowsazure/hh545593.aspx. The main purpose of Head node is to distribute jobs/tasks among all available
Compute nodes. One can download the sample (Windows Azure HPC Scheduler code
sample) from Azure website http://code.msdn.microsoft.com/windowsazure/Windows-Azure-HPC-7d75eb26 and follow the steps to configure HPC Scheduler.