EC2 Bare Metal Instances with Direct Access to Hardware
aws.amazon.com
aws.amazon.com
- General performance analysis. For this more counters is generally incrementally better.
- Running https://github.com/mozilla/rr. This requires the retired-branch-counter to be available (and accurate - sometimes virtualization messes that up)
The second one I actually care more about, because I've pretty much stopped trying to debug software when rr is not available, too painful ;). Feel free to email me (email is in my profile) for gory details.
This behavior is ok for statistically profiling frequent events but if you depend on exact counts (as rr does) or are profiling infrequent events it can mess up your day.
https://lists.xen.org/archives/html/xen-devel/2017-07/msg022... goes a little deeper and has citations.
the AWS machines looks to be huge.. hence, high cost.
Brendan Gregg wrote about them at http://www.brendangregg.com/blog/2017-05-04/the-pmcs-of-ec2....
I am a customer of packet's, along with other virtual and dedicated hosting providers. I don't use aws ec2. I've been pleased with Packet, and their offerings are much more diverse than this initial offering from aws.
The location nearest me is an "edge", not a "core". I wonder what I would be missing out on, if it's not "core".
Even in core DCs though the availability of different types of machines varies.
Love packet.net btw -- the bgp stuff is really game changing.
packet.net I do coreos and provision with userdata specifying what docker image to run... that's all it takes to have immutable deployment :)
Building a high-availability metadata store is not easy. And ensuring that incoming request IPs aren't spoof is a little non-trivial to reason about.
UserData is a good way to provide a one-time token that can be used to fetch data...
Using SSH for provisioning is just plain dirty... and almost impossible to do reliably... You'll need global locks and timeouts to recover in case one of your master crashes... Plus some garbage collection to cleanup things that where not fully provisioned.
This is a LOT of unreliable state to manage. And ton of corner cases. Having the right architecture matters for reliable automation.
https://rare-technologies.com/machine-learning-hardware-benc...
There is nothing in this article that has any information on GPUs. It doesn't even list the actual machine instances used (would not the AWS tier name be useful here, for example?).
i3.16xlarge: 64 vCPU 488GB 8 x 1900 NVMe SSD
i3.metal: 72 hyperthreads 512GB 15 TB disk
I wonder if this is the hardware for the host of the i3 series.
On another tangent - how do Google Cloud and EC2 attach GPUs to instances - given that you can choose CPU and RAM the GPUs must somehow be modularized away from a dedicated server?
Disclaimer: I work at AWS on the team responsible for the Nitro System including EC2 Bare Metal Instances.
Rack A of servers has a base_server_x. Rack B of servers is base_server_x + GPU_Y.
You ask for no GPU, you get a server from rack A. You ask for a GPU, you get a server from rack B.
No magic monkey adding GPUs to instances ;)
It sounds a bit like MAAS [1], which allows you to throw images onto, and manage real servers easily, very much like you might spin up VMs on AWS.
[1] https://maas.io
https://aws.amazon.com/about-aws/whats-new/2017/10/announcin...
That's probably the most interesting aspect for me.
Does anyone know how that's provisioned? i.e 8x just under 2TB volumes, or something else?
I guess some other open questions:
- If one of those drives fails, will Amazon hotswap them out, or do you need to migrate to a new instance (moving TBs of data to a new box without causing outages can be painful.)
- Is there a hardware RAID controller for those drives, or is it software only?
- Can anyone with access to one of these boxes produce some IO performance stats on them? Bonus points for stats on single drive vs concurrent across all drives (i.e is there any throttling). More points for RAID10 performance across the whole 8.
- There is no hot swap for the NVMe storage.
- The 8 NVMe devices are discrete, there is no hardware RAID controller
- Anyone can get I/O performance stats on i3.16xlarge as a baseline. Intel VT-d can introduce some overhead from the handling (and caching) of DMA remapping requests in the IOMMU and interrupt delivery so I/O performance may be a bit higher on i3.metal, with a few microseconds lower latency.
With amazon, they have complete control over the network in and out, so cutting you off and re-imaging a server is pretty trivial.
To be fair, its not that hard to do even if you're not amazon.
Most of the big server vendor's out of band interfaces have an API, so telling a server to reboot from a network image is pretty trivial. Providing a netboot infrastructure to install images with a 'userdata' script is also not that difficult.
you'll need a DHCP server, tftp to serve the boot image, and usuaally an NFS server to pull the rest of the image over. With some engineering work that could be made to use HTTP.
NVMe is a better match for the the storage operations supported by EBS. A bonus is that by surfacing EBS over NVMe there is a common storage interface for both managed storage volumes and local NVMe storage.
Amazon is a big enough customer that it wouldn't surprise me if they could get Intel to make special ME firmware with the features they want in it.
...which also means the ME exploits discussed recently here could lead to a whole lot more fun... ;-)
And thanks for posting this here personally @jeffbarr.
addon thoughts: nonetheless, the specs on the bare metal box are ridiculous. buying something like that will cost you $50k (someone correct me?) - then you need to find a place to host it... thats not easy to do.
For context, AWS is coy (at least publicly) about the existing dedicated instances and CapEx vs. OpEx.
Since EC2 Bare Metal instances will use the same pricing models as all other EC2 instances (on demand, reserved instances, dedicated host, spot), the same information is relevant.
I hope they have thought this through carefully, because it potentially exposes everyone on EC2 to more, potentially worse, attacks.
When ENA is used in virtualized instances, Intel VT-d and SR-IOV are used to bypass the hypervisor. When ENA is used in a bare metal instance, the OS simply has direct access to the PCI device. In either case the device is a controlled surface, and VPC software defined networking deals with verifying and encapsulating network traffic.
But how many hundreds of millions of lines of code are on these systems, roughly? Ballpark estimate.
You have full access to the machine, so you can update firmware / tinker with BIOS etc.
Then let the machine go back into the pool, and wait for it dial home.
There is some mitigation, but this is a major reason a lot of vendors do not do per second / minute bare metal.
Is this going to be available online afterwards, or is it just an in person breakout?
I'm thinking about going full-stack next year. I have a bit of experience building APIs besides being mainly a front-end developer.
Is going "cloud only" a good idea? I thought about starting with AWS Lambda, S3, DynamoDB and the Serverless framework.
Are the providers hugely different or is it a good idea to spread out and do some Azure and GCP too?
Career advice: Never go "foobar-only". Make an effort to learn "foobar" but understand whatever is one layer below it in the stack. Want to go "cloud-only"? Learn OpenCloud, not AWS.
However, I would definitely learn a SQL dialect and learn how RDBMSes such as Postgres work (especially what is meant by ACID) as most companies are based around a database. Don't believe the hype - SQL is not dead. Dynamo is a great technology but there are many problems it can't solve for you.
Finally, I personally don't know Azure or GCP so well. Only knowing AWS in-depth hasn't held me back so far. I've used a few of Azure's services but I've never built a serious app on it.
My recommendation is to not really worry about individual technologies and to focus on safely handling and working with data.
I learned React and later React-Native. Selling myself as a "mobile consultant" then worked fine, nobody cared "how" I made these mobile apps.
My idea was the same with back-end, learning some framework and start selling myself as "mobile cloud consultant" or something, with the hopes that clients also don't care "how" I create these cloud back-ends.
I know SQL, worked most of my time with RDBMSs, so this wouldn't be big of an issue. As I said I already did a few back-ends, but my focus was on front-end, usability and such.
I just mentioned DynamoDB because I had the impression that it was "the AWS DB", do they offer an SQL service besides Redshift?
It allows you to launch many common database engines, which are managed and backed up by AWS. I've been using it for a few years and for my use-case it's great.
DynamoDB is noSQL database.
RDS somehow sounded like the Redis service of AWS, hehe.