 Welcome, NithaNutt. NithaNutt is neither an economist nor a professional sysadmit, but as a good hacker he tries to dabble in everything that's interesting. So those things as well. During his work in continuous integration, see his other talk today or previously at GPN. Yesterday. Yesterday, yeah. Yeah, he thought, yeah, auctioning works well in other areas to make stuff more efficient. Could it also be used to make the resource allocation in data centers more efficient? So yeah, please tell us about it. Yeah, so this, hi everyone. This is, yeah, really only a thought experiment. And if you watched my last talk and got bought to death or not, you may have, yeah, experienced you to Q&A that many of the things I thought about were already existent in one way or another. So could happen here as well. As said, I'm not an economist and not a sysadmit. So yeah, I do a bit of sysadmit work at work, but yeah. There may well be solutions already, which I just don't know because I'm not really deep into this field. Yeah, I do some work with containers and containerized loads somewhere. But not with Kubernetes, for example. I did try to do some research into payment models and stuff. But yeah, it's somewhat expensive for those, yeah, like seven pages. So I thought, no, no, just no. And this is on the cheap end. If you don't try to sell from or buy things from ISO directly, it's going to be like 100 bucks or something. So yeah, basics. If you did any lecture about why we actually do containerization or virtualization in hyperscaling or stuff. Basically, it's a way or it's used as a way for managing different loads. For example, if you do have a HTTP server which is serving requests or if you accept data from the outside, for example, yeah, email or something, then the load isn't distributed evenly over a day. But for example, during working hours, you get high loads on some work-related services. And yeah, sometimes different loads. But if you have many services, then it kind of balances out. And if you have many virtual machines, then you can just move them from one node to another and get some benefits. And like, yeah, try to get an even profile. Also, if you use virtual machines or containers which you can move from one node to another or just turn them off and put them up somewhere else in the case of containers, you can end up with nodes that you can just switch off during the night or something in your huge data center, which allows you to save energy. And during a day, you end up with different amounts of nodes which are actually online. So this helps save some resources. But then there's another kind of load which is kind of different. For example, yeah, basically batch drops. They still exist in one way or another. The typical thing you think about are HPC loads. So if a researcher wants to do some number crunching or something, or if you have a service which allows uploading videos and you want to re-encode them in different formats or something to serve different kinds of end users, also you might want to regenerate search indices or something, which helps make your actual service more responsive. Or garbage collection tasks, for example. Or, and this was the actual reason why I kept talking about this, CIS. Yeah, CIS are jobs that you start once. They run through and some, yeah, they give you a result of some sort. So what if we try to use an auctioning process for leasing out CPU time? For example, in 50-minute intervals. And to be more precise, options on 50-minute intervals of CPU time. Or something similar, you can go 30 minutes or something. Would this create an incentive? Of course, in addition to this leasing out of CPU time in auction process, you might have users which want like a baseline which they do always have or even users which don't opt in this auction process and all. Also, if you are sitting in basically a big budget company or something, then you may be interested in not actually doing this with real money, but like with tokens you give out to your different sections and they use them to basically, yeah, get your service or something. So even if there's no money involved, maybe an auction process is actually a good idea. So let's think about how this could affect your work. Again, we assume we have some users with a batch job, some researcher, things about running some number crunching process and comes up with an estimation about how long this is going to take to avoid congestion. To reserve this time slot basically. This could end up in leasing like three times or something. The job starts running at some point. And yeah, if you ended up with a wrong guess, for example in this case, the period you choose is too slow or too short, then you can basically release another two slots for maybe a surplus of money because something changed or the same amount and get the option of prolonging this process. If you assume that on the same machine or infrastructure you have different kind of services and you also have this video service, then maybe the person just, yeah, it's okay with paying 10 bucks for easy upload or something because it's super important or something. But also if your job completes earlier than expected, then due to having bought options on the computational resource, you actually don't pay for the entire thing. This was the reason why I thought maybe it's clever to lease out options instead of the actual thing. Also on the incentive side, of course, if you see, okay, this congestion of resources we see here reflects in the amount of money I have to spend on this lease. I can just decide that it's worth it in the case, for example, for a CI job and say, okay, I'll just come back later or say that I want to lease this amount of time slots, but in the future, and maybe I get better prices then because the provider doesn't yet have that many loads which are planned for this time in case of patch jobs. So in the ideal case, this would steer resource usage and avoid congestion and also allow prioritizing different loads. In the worst case, it's just the guy or girl or whatever with the most money gets what they want, but usually there's incentives to save money and so, yeah, you try to pay less and accept that the job will run later if it's acceptable. Also the case which I didn't include here, even if you have a continuous job or load like a web server, if you think about the usual year in Congress which gives out tickets via this webshop which is horrendously congested usually and you have the responsibility of running this thing then you can go, okay, I know that this thing is going to online then and this will create a lot of load so I'll lease extra resources for this at this point in time for cheap bucks because I know it's a month in advance or something. We can also play with SLA buckets, so it's service level agreements you made. I have heard of it in one way or another and one idea which I think Google published at some point ten years ago, something I still had here back then, that's for sure, is the idea of doing things via a budget. So you define a time budget for like the coming month or the coming year and you are explicitly incentivized to spend this downtime budget and if you have this kind of environment then you may go like, okay, no service down, I'm still happy. Maybe it's not going great sometimes but at the end of the month if I still have a budget left then I can just basically save money by using this auctioning process by either basically auctioning the resources I already paid for for other people or choosing a point in time where I see that computational resources are in high demand and just say, okay, I'll cut my service at this point exactly because I can save tons of money. My original motivation again was CI and there I can also introduce budgets of some sort. So for example, if I have lots of money left in my budget then I can do expensive checks even on every single comment but if money is tied I can skip a few at least for some jobs or some checks. If resources are cheap then I can basically spend my budget on checks or I do have an incentive to actually skip tests if it is completely pointless. And this is not a thing you usually do with CI. CI is usually set up to just run and spend I don't know whatever resources on every single comment or every single branch tip or something that got updated. We've complete disregard to the amount of resources basically spent on this job until the timeout of an hour per CI pipeline kicks in. So if we have an auction we usually start with a base price and if I am an infrastructure provider for example I would usually choose them at utility costs but this is another idea which kicks in can actually take energy costs into account. So let's assume this is not a thing datacenters usually do as far as I know that I have a contract with an energy provider which has some variance basically depending on how much energy is in the system. For example if the sun is shining and the wind is blowing energy is cheap if it's not then energy is expensive. This creates additional incentives which I can propagate to my users and end up with a system which is more economically friendly and I can even downscale a bit my what's called buffer ring batteries and stuff which I usually have in my datacenter. And in the case of some basically cable going bust and me being dependent on my diesel generator in the basement I can actually start increasing the base cost for yeah, auctioning out resources to keep basically my expenses cheap and incentivize users to do something later when I get energy again or basically stop auctioning new leases out. Also I can go different routes and do the same stuff with other resources and this is another beast which I didn't have thought about yet in detail but maybe there are also some possible benefits I'd say. Yeah, this was my talk maybe not all of you are about to date again. I take questions. Thank you, so if you have a question please raise your hand, yes. I also have another idea or question where I would like to have your opinion about the energy or base it on the energy consumption. So do you think it would be also be usable for this control energy? That's what I found in Google Translate, that if you have someone needs to provide energy within a few seconds or within one second it's like when you stop your computations. That's actually a good point because I read that there are actually talks of some energy providers or network providers with data centers that they can actually basically provide backup power for the over grid using their buffer batteries but of course they don't actually want to do this mainly because they want to keep their SLAs, basically. But if you basically create a system where it's easier to shed loads at any given point of time this can create another opportunity where you basically make it easier to provide power back to the system via your backup batteries or even your diesel generator if you get enough money, let's say. Yes, next question please. Do you have an idea how the spitting process could be automated so that the people running the workloads don't have to worry about allocating this capacity manually? Of course. One thing which I didn't tell is that in my opinion this should absolutely be automated and you can do this maybe cleverly. For example with your CI system you can maybe create a bot which basically throw game theory to tell it that it should save money by being smart, basically. Yeah, the usual suspects would come around the corner with some blockchain or something. Yeah, no. Of course, you have the usual problem with creating trust and accountability and stuff, but you can do this with your regular REST APIs. It should just be, yeah, if it's not standardized then you have another vendor login basically and that's the thing. Yeah. Any more questions? Come on, come on. In the meantime, I often heard that auctioning is used to discover the maximum price you can sell a product for. Would there be a danger that prices for data centers are going to rise with this idea? Maybe, maybe not. I mean, you have so many providers for this. Of course, if Amazon does that and customers are stupid enough, then prices will go through the roof, but yeah. So maybe it's a good incentive for them to implement it. Yeah, but also, I mean, this is the whole I've actually had to read through this guy X proposal which is floating around through the EU and the whole idea behind this thing which may end up being an actual system at one point is that you don't have a vendor login and if you don't have a vendor login, then a new data center operator which is a lot cheaper but basically have the same features and basically operational security provides the same assurance levels and something. Yeah, then they can basically produce customers again. Makes sense. Any more questions? No, alright. Then thank you for the talk and thank you for being here. Have fun at the GPN.