Hi, my name is Stefan Heunerty and I'm going to talk about optimizing KVM for NVMe drives. So what are NVMe drives? NVMe is a standard interface for solid state disks. So it's a PCI storage controller interface and there is an open specification and a standard Linux driver that can talk to any NVMe compliant device and devices are made by multiple vendors. What's interesting about NVMe drives is that some of them have extremely good latency, much much lower latencies than we've had in the past. So I quoted two figures here. One is for an enterprise SSD so that would be something for data centers and servers and so on. This is an Intel Optane drive and it's quoted at 10 microseconds for reads and writes. But even the consumer SSDs can be very low latency so the Samsung 970 Evil Plus is quoted at around 17 microseconds write latency. Now just because a drive says it's NVMe, just because it uses that standard doesn't necessarily mean it's one of these low latency drives, there are significant differences so you should check the datasheet before purchasing drives. Now in 2012, Jeff Dean published a slide that became very popular called latency numbers every programmer should know and it's probably became popular because it's really interesting to see how long different operations in computer systems take. Now the reason I'm showing this table and the reason it's interesting is because if you look at other storage, if you look at spinning disks, hard disks that have platters that store the data magnetically and they have drive heads that need to move to the correct location in order to be able to read those blocks of data from the platter. The spinning disks have seek times in order to perform random accesses if we do the same random read, there's movement involved and that takes time. So the time for that is quoted as two milliseconds. So comparing these two things, hard disk versus an NVMe solid state disk, we have 2,000 microseconds for accessing a random read and 10 microseconds so there's a huge difference here and you can see why optimizing for NVMe drives is very different than from traditional disks. So let's have a look at a relationship between IOPS and latency. This is an important one, in fact this is the critical thing that drives the rest of this presentation and the optimization work that we're going to look into. It's the relationship between IOPS and latency. IOPS is the number of operations per second and here I'm showing a simple model of doing one operation at a time and the relationship is just the total runtime divided by the latency. So this is the number of operations we can complete in that runtime. So the first thing you notice is that this relationship is non-linear, right? It's not just a straight line, it is a curve and to start investigating it, imagine that we are at the right hand side of this curve, we're at 20 microseconds latency, that means it takes us 20 microseconds to complete our operation. If we identify an optimization we could make to make this system faster, say it shaves off two microseconds and we can bring it down to 18 microseconds latency and the graph shows us how many IOPS we are going to get if we move it from 20 to 18 microseconds latency. Well that slope is pretty flat over there at 20 microseconds so actually the number of IOPS doesn't increase that much. But if you imagine for a second that we were at four microseconds of latency on the left hand side of that graph and then we shave off two microseconds, so again here we're just shaving off two microseconds, the same adjustment in both cases. But now it brings us down to two microseconds and we go from 250K IOPS to 500K IOPS. And this might be an obvious relationship because when we were at 20 microseconds and we removed two, we only optimized away 10% of the total latency, but when we were at four and we went down to two, we optimized away 50% of latency. So it does make sense that the jump is going to be bigger here because it is a bigger proportional improvement. But still it leads to interesting things. First of all, think about having two independent optimizations A and B that you found and that you want to make. Well, one of the misleading things here is that if you apply optimization A and then you apply optimization B, say both of them reduce the total latency by two microseconds, then if optimization A gains you 10K IOPS, optimization B will gain you more than 10K IOPS because it was applied afterwards after we had already reduced the total latency. And because they're independent, if we do it the other order, the other way around, if we do optimization B first and then optimization A, then we'll have the reverse. Optimization B will give us 10K IOPS improvement and optimization B will give us more than that. So this can be misleading, right? It can be tricky in the order in which we apply optimization, we can kind of fool ourselves thinking that one boosts IOPS by a lot and the other one doesn't. But in terms of total latency, it doesn't necessarily tell us how much time we've reduced. And that's why saying something like IOPS increased by 10K doesn't really convey enough information to know what is going on. You need to know at least the basic IOPS level you're at before in order to understand how the latency came into play. The other thing that's important about this graph is that NVMe drives being at 10 microseconds or less latency if we focus on that. That is the left-hand side of this graph. That's where the graph becomes very nonlinear. That's where the slope gets very steep. So we need to keep that in mind that any small change to latency, increasing it or reducing it on the left-hand side of the graph can have a big effect on IOPS. You need to re-examine the guest and the host software stack because the hardware is faster. So now we need to re-examine the guest and host software stack. And we need to rethink the architecture of QEMU of KVM and of the Linux drivers and so on because the hardware has gotten so much faster. And when I say rethink the architecture, that's not a buzzword. What I mean by that is think back to that curve that we saw, the IOPS versus latency. The optimizations that we considered in the past and that had no measurable effect, they were not significant in the past. We decided they were too complex or for whatever reason we didn't implement them in the past. Those optimizations might now be relevant again because even shaving off a little bit of time on the left-hand side of that curve can boost IOPS a lot and can allow the application to get better performance. So that's why I mean rethinking the architecture because we really can reconsider things that didn't make sense in the past. And so that's the 10-microsecond challenge that we're going to talk about. Okay. So let's begin by looking at the IO-request life cycle. The IO-request life cycle is the core of what we need to understand in order to optimize this. Here is a high-level model. It doesn't show the specifics of virtualization. You don't see QMU, you don't see KVM in here or any emulated devices or the operating system or anything. This is just a high-level model. What it shows you is that an application that is running on the VCPU and decides to submit an IO-request, in this case it's a read request that is being submitted, that request needs to be prepared and then a message will be sent to the device notifying it that there is a request available and then the device can process that request. Now when that message has been sent, when we've submitted our IO, the VCPU might have no more work to do or it might have some other tasks that it can run in the meantime while we're waiting for the request to finish. But either way at this point the critical path is in the hardware because now the device with its latency of say 10 microseconds is going to be processing that request and when it finishes it sends back a completion notification to the VCPU. The VCPU is going to then process that completion and resume the application because the IO has finished. And so that's the life cycle of a single request, of just one request in isolation. And the important thing to understand here is that if we're trying to optimize the software layers we need to study the mechanism through which requests are submitted, the mechanism through which requests are completed, and of course the code path and the layers of code that are parsing requests or creating them in memory and so on because that's what we can optimize. That's under our control. So you might have noticed that I've been mentioning latency all the time. And in this presentation we are going to focus on latency but latency is just one performance factor. There are others. So request parallelism is another thing that really boosts performance and batching is one of the techniques to also benefit from that. What they can do is they can hide poor latency because you're able to do a lot of requests at once and that way you're able to get a lot of work done even if the latency for one request is relatively long. But that's not what we're looking at here. The reason why we're looking purely at latency is because it's a fundamental thing and if we optimize latency first then we can consider those factors later. Now there are latency sensitive applications and you can't hide poor latency from them. And the reason why is because they need a specific request to complete before they can continue. Even if there's a lot of parallelism available to them because they need to wait for one specific request they are bounded by the latency of that one request. And that's what we're trying to optimize here and that's what's most obvious. Those types of applications suffer the most when they're run on virtualization on extremely fast hardware because that's where the overheads become apparent. So what we're going to do is we're going to look at QDepth 1 benchmarks and that means only submitting one request at a time. We're also going to focus primarily on small block sizes. I will be showing graphs that have the larger block sizes just as a reference but what we'll see is that other factors come into play there that maybe the data transfer time and so on become more relevant and they dominate and we're seeing less of the completion and submission latency which affects applications with small block sizes. And if you think about networking performance the kind of analogy or similar thing there is benchmarking small packet sizes that tends to show the cost the per packet cost and it's the same thing here that's what we're focusing on. But you can get other perspectives if latency isn't the only thing you're interested in then take a look at these talks. There is another talk this year at KVM Forum which investigates NVMe performance and last year there was a great talk at KVM Forum that compared storage performance between hypervisors NVMe and various other things. Okay now I mentioned that the mechanisms through which we complete and submit requests are important because they can determine the performance or they can determine the latency. So let's have a look at the mechanisms that are used in Linux and in KVM today. These aren't the only mechanisms but they're the main ones. First there is eventfd which is a counter and it's a file descriptor. So when you read from this file descriptor the counter is reset to zero. If it's already zero then the read would block. Now if the counter is incremented multiple times you don't need to read it multiple times because a single read already resets it to zero. So what this means is that multiple notifications will be coalesced into a single read which can be nice for performance that helps. Now because it's an event because it's a file descriptor it relies on the kernel scheduler to wake threads because if you're trying to read from it or you're in a select style system call waiting for that file descriptor to become ready then your thread may be descheduled. Maybe the physical CPU will even be halted and put into a low power state and waking up again from a halted CPU and resuming the application thread that may have been descheduled has some latency. And so this is not necessarily the lowest latency approach the eventfd but it is widely used. It's used by VFIO interrupts by KVM's IO eventfd and IRQ mechanism and by Linux AIO and IOU rings completion mechanisms. So the other approach, polling or busy waiting is also popular. So this simply means looping and continuously checking for the event that you're waiting for. Of course if you do something from a tight loop that consumes CPU cycles and no other task can run while you're running. So it's not very power efficient, it does hog the CPU but the advantage of this is when I mentioned how eventfd relies on the scheduler and the CPU could be halted and there's a latency associated with that, well polling does not have that problem because when you're polling you are running on the CPU, you have control, there's no latency, you're just going to read the completion value and see that the request is now ready. And so it has great latency and that's why it's used. It's used by QMU's AIO context, by KVM's Hophole and S, by CPU idle Hophole and Linux IOPole and DPDK and SBDK, all these things. They use it in different ways in various flavors but busy waiting is used in order to reduce latency. The reason I covered these mechanisms is because later on when we look at the different optimizations available and the ones that I've tried out and that I'm presenting here, they are related to these and how to use them effectively. The starting point for NVMe performance, for achieving good performance in VMs is PCI device assignment. PCI device assignment is the way that achieves the highest performance. You can get bare metal performance by doing this. The reason why this is so efficient is because when you take a PCI device and you pass it through to the guest, then the host is actually not involved in the critical path of processing IO requests. This works because the PCI device, the hardware registers of the NVMe drive will be memory mapped into the guest so that accessing them doesn't require the hypervisor to be involved. And the IRQs, the interrupts that are raised by the NVMe drive, they can be directly injected into running guests if they are currently scheduled on a CPU, on a physical CPU. And that's thanks to posted interrupts, a CPU feature that's available on some CPUs. So again there, the hypervisor doesn't need to have an interrupt handler, doesn't need to forward that interrupt in the VM, instead the hardware is able to do that directly, which is good for latency. And then finally, for guest RAM access, the IOMMU, the IO memory management unit allows the physical PCI device, the NVMe drive, to directly access guest memory. So again there, you're also not involving a software layer in the hypervisor in order to perform any IO. So that's why it's fast and it's a great approach for high performance. It does have some limitations which cause it to not be as widely deployed as it would be great for performance, but it does not support live migration in most cases because that device is actually a black box to the hypervisor and QMU doesn't know about what's going on, it's unable to live migrate it because only the guest is using that device and has the driver and the state associated with it. Software features like backup and snapshots and so that QMU can offer when you're using disk images are also not available again because the hypervisor is bypassed. Another thing to consider is that exposing PCI devices to your guests may be inconvenient or may have security implications and this is also why sometimes it cannot be used. The issue here is that of course if you have varying hardware and you want to live migrate your guests around or if you just want to upgrade some of the hardware in your infrastructure then the guests will actually see those changes, they will see the new hardware so they need driver support and they might need reconfiguration if it's a different device that requires different setup and so that can be prohibitive because in some environments you don't control the guests, they may be very old and so on and so then you don't have the freedom to change the hardware. You might also be concerned about the guest being able to say do a firmware update on the device and so on so there are some issues there with exposing those devices so that's another thing to watch out for and the final thing is simply the cost because you do need to dedicate one PCI device to a particular guest so other guests won't be able to use that same device, they cannot share it because only one guest can be the one that's running the driver at a time. Now you can use SRIOV, some devices allow you to virtualize them and split them up into virtual PCI devices but that also has its limits. So here's the configuration, I'm not going to go into Libvert domain XML details in this presentation, I just want to show you the slides so that if you are watching this or reading this later on you could have links to the documentation and find the keywords and things to look up in order to apply this configuration. Okay, so we've mentioned that for starters PCI device assignment is the way to get good performance. You don't necessarily have the best performance right away with PCI device assignment unless you also consider the NUMA topology of your host and what this means is that on modern systems typically the system is divided into multiple domains that are called NUMA nodes and a processor and memory and PCI devices are associated with a particular NUMA node. Accesses to the resources within that node are local and they are cheaper than accesses to resources in other nodes and so for performance it is important that we keep be aware of locality and we make sure that our operations are within a NUMA node where possible. So the tools that you can use to investigate this are NUMA CTL and LSTAPO and then you can get an overview of the topology of your machine. There are also performance counters that you can use if you suspect your application might be making cross NUMA node memory accesses and so on. For more information check out this talk that Dario is giving at KVM Forum this year about topology and NUMA. So in terms of how you set things up, Libvert gives you the ability to pin VCPU threads to physical CPUs. You can also control QMU's own threads, the IO threads and the emulator thread. They can be pinned to physical CPUs. In addition you can control which host NUMA node to allocate portions of guest RAM for and you can also expose a virtual NUMA topology. You can describe a NUMA topology that the guest will see and the goal there is we want to align the guest's virtual NUMA topology with the host's NUMA topology. It should reflect what those resources on the host look like and by doing that the guest kernel as well as NUMA aware applications running inside the guest will be able to make good scheduling and allocation decisions because they'll have that locality information. They'll know what is cheap and what is expensive so they can choose the best configuration. Now here's a little example. This is trivial but what's interesting is that it can also demonstrate how quickly we hit limitations and trade-offs here when we do NUMA tuning. So let's say we have a one VCPU guest and what we want to do is we want this VM to do IO so we have an NVMe PCI adapter and you can see the topology here in the diagram on the left side of the slide. Now where should we put the VCPU on which node should it run? Since it's going to be doing IO and using the NVMe drive let's place it on node zero because that's where the NVMe drive is local. So instead of placing it on node one where it would have to cross the node we put it on node zero. So that's the starting point so let's pin the VCPU thread onto processor zero. Now if we're using an IO thread in QMU which we will also get into later on why using IO thread can be advantageous that is going to be doing IO on behalf of the guest and so that also needs to be where the NVMe PCI adapter is. And so we will pin it to processor one and of course we're on node zero so we want to be using RAM zero so hopefully guest RAM fits into RAM zero's range so there's enough memory there for our entire guest that would be great and that's the setup but you can already start to see some of the challenges. What if we wanted a guest that had more RAM than was available in RAM zero then maybe we would have to define a virtual NUMA node and use some of the memory from RAM one as well and hopefully the guest will then be able to make smart decisions about what to place into which of these two virtual NUMA nodes. Now if we add more guests to this picture it becomes even harder because at that point we need to maybe make sacrifices decide whether to share resources like processors across guests or whether to assign vCPUs to processors that are on what is going to turn out to be the wrong node. Now today NUMA tuning is something that pays off for performance critical VMs doing this manually pays off and hopefully in the future we'll see more automatic NUMA tuning support in the management tools that use KVM so that they can automatically set the things up and we don't need to manually tune it. It gets especially hard when we have a lot of VMs or when we do live migration so the situation is dynamic and it's no longer so easy to come up with a static pinning that makes sense. Okay so we covered the importance of NUMA and a bit about how to tune it and where to look so next up is CPU idle halt poll. This is going back to the IO request lifecycle that we looked at so what we saw was that the two important mechanisms that we have are submitting requests and completing them. Well if you have passed through an NVMe PCI device there are interrupts for the completion when request is complete there is an interrupt. Now halting a vCPU involves a VM exit and if there's no further work to do even on the host then maybe the physical CPU will halt too and it will go into low power state and then when the NVMe drive completes the request it will fire the interrupt the CPU will come out of that low power state and there's a latency cost associated with that and then we can re-enter that vCPU can VM enter and you can see that this becomes a chain of several steps and it has a latency cost so we want to avoid that. What the CPU idle halt poll driver does is it runs a busy wait loop inside the guest so on that vCPU at the point where it decides oh I have no more work to do so it has a timeout and it says well I'm going to try running a busy wait loop for a little while at least to see if something still becomes schedulable and becomes ready to run and so that way the vCPU is actually running is actually active when that interrupt comes in and so when that interrupt is delivered we can quickly schedule the application again after completing the request and we don't need to go through this long path of going down all the way to a halted physical CPU and coming back out that decreases latency. Now this mechanism makes sense when you are pinning vCPUs because when you're pulling you're wasting those CPU cycles until there's some work to do and of course if you had lots of VMs and if they were sharing CPUs you wouldn't want them all to pull so this is something to do when you have a high performance or performance critical VM and you have assigned it a dedicated CPU. Okay now here's the tuning this is just for the syntax I won't go into detail. Alright so now here is our first graph so these are the results for doing random reads and random writes Q depth 1 on an NVMe drive and what we see here is the blue bar the leftmost one is the bare metal result with the NVMe drive the red bar the one in the middle is the VFIO result so that is a virtual machine with a PCI device assigned to it and we can see that that's typically lower not in all cases but but it's it's often lower and even by a significant amount and then the final result is the VFIO with that CPU idle halt pole driver enabled and you can see that that one performs very well. Why is it performing better than bare metal right? How is that possible? Well it's because bare metal isn't doing polling and so bare metal might halt the CPU it will save more power but then it will also have higher latency and the VM is staying active the CPU is still running and so it's able to take those completion interrupts with lower latency so actually in this benchmark it achieves higher performance so that's what we see here and we're going to take this a step further there's another polling approach we can use and that will actually make the bare metal versus virtual machines comparison fairer and it will show us the final picture so here we go. The Linux NVMe driver allows you to allocate cues for specific usage so it's possible to actually reserve polling cues and what those pole mode cues do is when an application sets the high priority request flag then the kernel will busy wait for those requests to finish and it just calls the pole function in that driver in the NVMe driver and that function will just check it will just check memory and have a look to see if the request has completed yet so the kernel can do polling for us and this is called IOPOL and so this improves completion latency and actually more than CPU idle halt pole because here we're guaranteed to be spinning and it doesn't give up it keeps running in its default mode at least and this allows us to make a fair comparison because this is done by the driver in both bare metal and in the virtual machine case so at the bottom of the slide here's the syntax in case you want to see how to enable it and let's look at the performance numbers so as you can see on this graph at this point when we enable that feature first of all the absolute number of IOPS the number of IO operations per second that we can achieve have jumped the the max we were at was around 80k before we used IOPOL now that we're polling all the time we get up to over 120k IOPS for q-depth one four kilobyte requests so you can see that that's a significant performance improvement enabling IOPOL the other thing we see here is that the gap between bare metal and VMs has closed so at this point they're very similar and you can say that using PCI device pass through you can get bare metal performance so that's great but what about situations where you cannot use PCI device assignment right I had this big disclaimer I covered all the cons and why why you sometimes cannot use it well in that case you can use vertio block and vertio block is an emulated storage controller it's a para virtualized device that was designed specifically for virtualization so it's been optimized over the years and has evolved and so it's a good storage controller to choose if you want to get good performance with KVM there are two settings though that I want to discuss here because they're not enabled by default yet and they do boost performance so they're worth considering the first one is multi-q although the feature has been there for years it hasn't really been used and in q-mu 5.2 that's going to change in q-mu 5.2 the number of queues is going to default to the number of vc-pues in other words multi-q will be enabled by default on vertio block and also on vertio scuzzy devices the reason why this is a win the reason why this improves performance is because giving every cpu every vc-pue a dedicated queue means that now the completion interrupts they can be directed at the cpu that submitted the io and that's the one where the task is scheduled and where we want to do our completion we don't want that interrupt to go to some other vc-pue that then says oh okay I'd better wake up that task that's ready to run on on another cpu and I'll send a message we don't want inter processor interrupts so by giving every vc-pue its own queue we can eliminate that and we can improve interrupt completion latency so that's why multi-q helps in addition to this the linux block layer also has multi-q support and there are some code paths in the linux block layer that take advantage of it when the driver only allocates one queue we don't take those code paths and the most the most obvious user visible effect of this for example is that the io scheduler is different for devices that have more than one queue and that are multi-q block drivers so that affects latency too and so it's it's best to enable multi-q next there's the vertio 1.1 packed vert q layout so this is a new memory layout for the queues that vertio devices use and this layout is more efficient in the benchmarks that I've run I've seen that it improves vertio block performance so this is also worth taking into account it's not a huge win but it is a small win and and and when devices are so low latency then every small win is worth taking okay now here's the syntax we'll move on and what we're going to do is I'll walk I'll walk through several more configuration topics and then I'll walk through some optimizations that I've implemented some prototypes some new stuff and finally at the end we'll look at a graph that stacks them all up and we can see how incrementally by combining them we can increase IOPS significantly so here we are io threads is the next feature if you're using vertio block that is critical io threads are a way for defining threads and assigning devices to them so it gives users control over which physical CPU device emulation and IO will run on so there's an end-to-one mapping there you can assign multiple devices to a single IO thread and you can define multiple IO threads as well so it gives you a lot of flexibility and this is great because it allows us to reflect the NUMA topology in our system it is also good for scalability because when you have VMs with many devices that are doing heavy IO you may want to put them into separate IO threads and run them on separate CPU so that there's enough resources for both of them and no interference between them the final thing I want to mention about IO threads is that the IO threads feature when it's enabled that device will be able to take advantage of an adaptive polling event loop in QEMU it's a different code path from QEMU's main loop and it has lower latency because it's able to do polling instead of always yielding when it's waits for file descriptors to become ready so that's another reason why it's faster and we'll see the numbers later on when I show the graphs so here's the configuration the things you can do for defining IO threads pinning them on the host and then assigning devices to IO threads in Libvert XML syntax okay so now we're going to move on to things that aren't as standard yet things that aren't as widely known and as widely used there has been a user space NVMe driver in QEMU for some time now it's been there for a long time but it hasn't been used very widely yet what it is is it's somewhat similar to PCI device assignment in that that PCI device that NVMe drive can be assigned to a particular VM however instead of passing the device through into the guest and exposing that physical device to the guest we still have an emulated virtual block device that the guest uses and sees and in QEMU we have the driver so it's in QEMU user space in the host and it's an NVMe driver and so what this means is that we're able to get some performance benefits from having a user space driver that bypasses the kernel that means no system calls are necessary and there is a shorter code path that's completely under the control of QEMU while still offering QEMU's block layer features things like live migration or snapshots and so on even image formats can work on top of the user space driver so this solves some of the limitations of PCI device pass through and right now some improvements are being made upstream and activity has started up again around around this driver non x86 architecture support is being added multicues being added and more so this is the syntax for configuring it one thing that is missing from the NVMe user space driver in QEMU that I wanted to add an optimization I wanted to try out is polled queues because in NVMe when you create a queue you assign to it an interrupt the completion queue has an interrupt and you can turn that off completely while creating the queue and when you have a queue that doesn't have an interrupt you can just poll for completions you can just look at the memory and see when those requests become ready and so doing so is an alternative to interrupts effectively this is kind of like switching from the event of the style mechanism to a polling mechanism and so we hope that it will reduce latency one interesting thing about doing this though was that it requires changes to QEMU's event loop itself because QEMU's event loop is really fundamentally designed for file descriptor monitoring the adaptive polling has been added to it but the whole premise is that we only poll for short amounts of time now when we have a poll mode queue in the NVMe driver we need to poll all the time but if we pull all the time we will be starving the file descriptors right because we're just spinning in our busy loop but we're not looking at the file descriptors so I have some patches that I'm going to send upstream that extend the event loop and in fact some of the IOU ring work has already gone upstream and I found that using IOU ring we're able to do this efficiently and integrate it into the busy wait loop without using syscause okay so we'll look at the numbers for that in the end the next thing I want to share is an idea that in one form or another has already been around for a long time in 2014 when we introduced coroutines into the core block layer and started using them for request processing that was very useful because we needed them for for things like IO throttling and and some of the the the operations that were just getting really really complex and difficult to write in an asynchronous style so now there's request queuing and so on in in the core block layer in QEMU but there was concerns even back then that maybe this overhead will will become a problem and so there have been discussions in the past about can we optimize it away and really the thing is when you are not using certain QEMU features like disk image formats or IO throttling or storage migration while those things are inactive you don't really need to do the full request processing all that machinery that infrastructure is only needed to support those features so wouldn't it be great if there was a way to bypass it when it's not needed so as a prototype I've tried implementing this I've tried implementing an aio fast path what it does is it introduces an aio interface to the block drivers in QEMU because currently they have a coroutine interface which kind of assumes that you're in this full request processing mode and that allows the vertio block emulation to call the NVMe user space driver with with relatively little overhead and we can skip the full request processing step so we'll see those numbers the next thing I want to mention is that when we looked at PCI device assignment we saw how beneficial Linux IO poll is we saw that polling for the requests from the NVMe driver is it reduces latency and it got us the highest IOPS that we've achieved so far we had this 120k IOPS bare metal so vertio block today the guest driver for vertio block does not implement this interface yet but it's a driver interface in fact it's it's one function that we need to implement and so I have also written a prototype for that it only supports q depth one because that's what I was benchmarking it's not a full implementation it's a prototype to check what kind of effect it has on performance and the link to the the git branches is on the slide so we'll look at that here we are so this is the final incremental applying all of these optimizations on top of each other and how far it gets us on the left hand side the starting position we want to look at bare metal and without IO poll bare metal is at 78k IOPS now when we configure q mu with a file aio equals native so this is a a standard non-optimized setup and we don't use the IO thread then we start at 21k IOPS so that's extremely low we can see there's a lot of overhead I wouldn't necessarily say that this is what most q mu users experience today because IO threads is recommended and more and more of the management tools built on top of kvm and q mu have been using it by default so hopefully more hopefully most users today are around the second blue bar the IO thread bar so when we add IO threads then we are at around 46k IOPS there's still significant overhead right it's still pretty bad so next up we can enable vertio block multi-q now doing it at this stage actually turned out not to be very instructive although it slightly improved performance it wasn't it wasn't very significant in this graph but it's still essential part of the reason why it didn't improve performance very much in this graph is because I was already using pinning both inside the guest and on the host and so on so everything was already set up optimally adding the cues didn't help the IO scheduler was already none so that didn't help and so on but it is an essential part of making things scale and making things work so keep multi-q next up we introduced the user space NVMe driver in q mu and that boosts performance so we jump almost 10k from 46k to 55k so that's that's a nice boost getting us closer to bare metal now what happens when we try the vertio block guest driver's iopole prototype so adding that on brings us up to the above the initial bare metal number that we collected without iopole on the host side so what this is doing is now that we're we're polling and we're using more cpu cycles we are able to make some ground there we're able to reduce the latency that we had so this is looking good but it's also unfair because now really we should be comparing against a bare metal that is also using iopole so let's do that on the right hand side of the graph you see the gray bar that is 121 120 k iops that's bare metal with NVMe iopole so we're still behind we still have overhead but our absolute number of iops has increased um quite quite well and we're not done yet so next up we can try the NVMe user space drivers polling queues where we are polling in q mu in the IO thread and this brings us up to 94k iops so that's definitely a worthwhile improvement a nice jump there and then finally the aio fast path that i just mentioned so this is the final optimization that i'm going to show today the final prototype that that i wanted to share and that bypasses the the full request processing in q mu and as you can see so that that that is another 10k further towards closing the gap to bare metal so that's the status that's what i wanted to share with you and i and i'm working on upstreaming these optimizations so that they can be used but the entire vertical block and NVMe approach with the NVMe driver NVMe user space driver has still left us with a similar limitation as PCI passed it we still need one device per guest luckily this year a new tool has been added to q mu called q mu storage demon and this is a separate program that has q mu storage related functionality in addition to that a vhost user block server has also been added to q mu which is very convenient it means that now we can use the storage demon we can host the NVMe user space driver inside it and that one demon can serve multiple guests so we now have the ability to share a single PCI device and use the user space driver and have multiple guests so that solves that limitation it's already available in q mu dot git but the code path is different from the vertio block results that i presented to you so those optimizations don't apply it some of them still need to be ported to this so over time we can expect this to equal the the results that i just showed and then this will be an excellent way for if you need to share drives on top of this the q mu storage demon offers a lot of other functionality some of the cool things are nbd exports that would allow you to also attach those drives on the host or applications can use them and fuse exports are also in development the block jobs features are available so q mu storage demon will be a nice utility and i think we're going to see more use of it in the future okay now if you saw the q mu storage demon slide you might have thought wait a second this is a familiar architecture we know this approach yes it's very similar to spdk storage performance development kit and that also uses a polling architecture and it's been around for years in fact the vhost user block interface was created in order to connect q mu and spdk so we're very thankful that that already exists and we can reuse it so i i wanted to mention spdk because obviously this has some influence and it's a great project to check out if you want to find out more about what's going on uh in improving the general non nvme case please check out stefano cazarela's talk this year at kvm forum and he'll be going into what he's done with iou ring and some of the new stuff that he's working on finally the future direction so in the short term it's time to get these prototypes into a polished state get them upstream that will allow us to reach the performance that i've shown you here on these slides and in the longer term i think what's clear is that pc i device assignment because it gives us bare metal performance it's important to find more ways to pass through devices because when the hypervisor is not involved when there's no software path that's how we get the best performance so summary what have we looked at well there's the basic configuration and tuning that is essential the numer cpu idle hot pole and iothread setup that gives you a basic performance starting point and then you have the big choice do you want to use pc i device assignment because that way you'll have the minimal overhead that's the best way to go if performance is critical but you need to keep in mind the limitations of that feature and if you decide that you can't use pc i device assignment then you can use vertio block with the user space nvme driver that will boost performance and finally the qme storage demon now allows the sharing of user space nvme drives with multiple guests thank you um i also published the ansible playbooks that i used to collect the data if you want to go and look at the specifics of the benchmarks there's a URL on this slide thank you very much


Hi everyone, Joe for Jaspy's casebreaks.com coming at you with a team random for Bowman Chrome pick your team number 16 guaranteed something and we took 40 bucks off per spot. So we pulled the eight remaining teams out of there and we're just randomizing you a team in that order. So we're just randomizing your names big thanks to this group for making it happen. I appreciate it. Good luck. Let's roll it randomize it five and a five 10 the hard way one one did I click it one there's one two three four five and another five ten the hard way six seven eight nine and 10th and final time there you go Aaron top two spots nice five and five ten times so congrats to you you get Cleveland big team couple big teams are you get Cleveland Colorado Dan with the rays Chris with the Rangers and Red Sox Edgar with the Royals Jacob with the Angels and Glenn with Oakland will put that little rooftop next everybody's names so you know you won that spot in the filler we'll see in the next video for the break itself. Jaspy's casebreaks.com


I think authenticity is everything in country music. Articulating exactly how you feel is not always easy, but I think aspiring to do that is all you can hope for, and then sometimes you get it right. Probably my biggest struggle was the what I should be doing versus what I feel like I have to be doing. Life has a tendency of grabbing you and putting you in a box and you keep running in that same direction for the rest of your life sometimes. And I did go to university and had some great times there and honestly like university gave me the space to be creative that I wouldn't have had had I gone into the workforce and something that I knew I probably wasn't going to be great at. That space to have ideas and have ideas that are wrong and try them and then get to start over again. And musically there was such a great scene of time by on the hill. All the proper touring bands were stopped there. That was the Newcastle gig for so many of them. I was part of the generation that all saw what Silverchair did. When you see someone from your hometown do something like that it makes you feel like you can too. It's a big deal to move to the other side of the world and especially to do music in a town like Nashville. It really is. My best way to describe it is it's intimidating and inspiring at the same time and you almost get to choose each day. And the best thing, the best experience of what I do and the reason that I do it is that moment when everyone's standing up singing along and in this hopeful kind of feeling together that's it, that's the reason I do it. I think there's a place in the world for everyone with whatever they do that will make them feel like that and I would hope that people go looking for it and find it. I'm Morgan Evans and I'm a proud University of Newcastle alumnus.


So, there's a quest line within Diablo 4 that you 100% should not do yet. It awards you an amazing item specific to your character class which will obviously scale with your level. Let me explain. How's it going guys, my name's DPJ and if you do enjoy the video leaving a like really helps out and if you like what you see and want to see more, be sure to subscribe.  He seriously took one for the team with his video. So there's a quest line called A Question of Self. This quest line is found in Hawazah, has multiple stages to it. It will require you to do multiple objectives. So I guess even if you have picked this up but haven't yet completed it you are still good here. The quest line begins with a question of self, then past regrets, then a series of steps and then Taser's final story. If you have any of these in your quest tab, hold out in completing them because when you do guys you get what's basically a unique amulet called the Mark of the Concave. What's special about this is not only the fact it's rare, meaning you can read all the fixes, add aspects and so much more but it's one of the attributes which makes this thing special. It drops with life on it which is something we do not normally see on amulets. And not only this, the other attributes on this item are directly tied to your current character class. Now why not do this right away you might be wondering. Well guys it's because the power level of these stats is of course tied to your character level. You want them to be as high as possible because you can only upgrade them so much and then they are halted. And in reality you want this thing above 725 or even 825, yes this means waiting until you're at least a level like what 90 plus but I still do feel this may be worth it for many builds out there or even for keeps sake on a future build you may put together because items like this do only drop once, you may as well make the most out of them guys. So yes hold back on doing this quest line if you ain't a high enough level yet, you may regret this thing in a long run or at a later date. But yes guys a short but sweet video on this amazing quest item that you don't want to miss but don't want to do straight away. Guys if you enjoyed the video leaving a like really helps out and if you like what you see and want to see more be sure to subscribe and hopefully guys I will see you on that next one.


sew together 21 challenge that I'm doing over on Instagram. If you've missed out on what this is basically when so my style dressed suddenly was no more I decided kind of on a whim that I wanted to pick up where they left off making some modifications just to ensure that it was something that I was going to be able to keep up with as an organizer and so far it's been really great. So every month I pick a category of patterns and then four patterns within that category post them all to Instagram all my Instagram followers vote on the pattern and whichever one gets the most votes wins. So for May I thought it would be fun to do a romper. So I put up some romper patterns everyone had the options of choosing between the made from her maids willow the love notions sundae ready to sew has one that's free and seam work Lucy and everyone voted on the love notions sundae romper today we're going to be talking about the sundae romper I'm going to be telling you all about the pattern I am going to be talking about suitable fabrics showing you three fabrics that I have picked out from my stash I'm encouraging everyone to shop their stash for sew together 21 just as an added bonus it's absolutely not necessary to do but as you can see I have a large stash so I always try to shop my stash first and with little challenges like this I find it easy to kind of just do one stash buster a month so all right so the sundae romper and before you're like I don't do rompers there's also a dress version okay so the sundae romper is the romper that everyone can wear that's what they're claiming the front and back v-neck openings allow for easy on and off front angled pockets are super practical and look great and elasticated casing at the natural waist makes this easy to fit and wear and then you can choose from a tank top or a dolmen bodice five bottom options including kind of a shorts option cropped pants full length pants a maxi skirt and a knee length skirt and then obviously if you wanted to do a mini skirt or a mini skirt you could easily make those accommodations too this romper is meant for knit fabrics there is also a standard bust and a full bust like two separate pattern pieces when you get your patterns printed so that you if you're used to having to do full bust adjustments you may not have to do them with this pattern obviously if you are an a cup you might still have to do a small bust adjustment to the standard version and if you're anything larger than maybe a double d i don't know what their busts include it's written on the pattern pieces though i think if you're bigger than a double d then you might still have to do a full bust adjustment but it's certainly just something for you to check it's really easy to do just measure the difference between your high bust and your full bust and that determines your pattern bust cup and then you can make either standard or full bust options i love that they include that um and then the it's a pdf pattern obviously so it comes in letter size a4 paper size there's the trimless format which if i'm gonna tape together patterns it's gonna be the trimless paper they also have large format file so you can send it off to sublime graphics and have it printed on the tissue paper or the tracing paper if you want and then they also have a projector file so if you're into the projectors you can do that as well so looking through these photos here yeah so looking at the kind of line drawings and looking through what i assume are their tester makes i know that they do a lot of testing there um kind of reiterating the description you do have that front v and the back v so basically the the way that you get into it is you step into it and then those the wide neckline widens up like a big giant mouth and you step in you pull the elastic of the waist out and then you're able to step in and pull it on um it has the dolman option which just is like a kind of like a grown-on sleeve it's kind of just a elongated shoulder or you have the tank option which i think is really cute and then for the bottoms you guys by goodness three different pants lengths so five inch inseam which is a little long that might be something that i look at shortening but we'll get to that then there's the cropped pant version which i absolutely will be making in the fall and the long pants version which i think in a something very neutral and staple like fabric like a cotton jersey black i think you would wear that to death the pants version even if it's just the tank uh pants version where you can throw on cardigans and light jackets i know for me being in the southeast that's how i would do it but if you're in like a warmer climate you could totally make the dolman version and adding a sleeve to a dolman is not that difficult let me know if you guys want a tutorial on how to do that it's very very simple um so those are your options for that i do love the little drawstring so it's elastic plus a drawstring so you can make your elastic a little bit looser and then tighten and loosen the drawstring if you're someone like me that goes through periods of inflammation and belly protuberances and some days are good and some days you're just extremely bloated um you can adjust that accordingly so i really love that and then the square pocket design is really fun as well and then of course if you're not into rompers um then you can make the dress version um the dress is in two lengths it still has the v in the front and the v in the back again that is something you can fill in in the back if you didn't want it to drop down to a v it's not going to show your bra or anything but if you just didn't want that much skin showing you could definitely for the dress since you can pull it over your head and get into it that way you don't need to have the double v opening for the dress just something to think about there um okay so it is meant for knit fabrics just looking through a few of these tester makes here it does look like the front is finished with a band which is really nice the dolman sleeves are hemmed like by turning under and the same thing with the skirt so i am going to encourage you guys to and as i'm looking at some of these tester makes too it seems like the bodice is very blousy that is not something that i love i get having a little bit of wearing ease in the length um but i don't love it to kind of double over i feel like that adds volume to my waist and i'm trying to eliminate that as much as possible so that's something i will look into kind of reducing the length of the bodice i'll measure it put it on my ditto form probably because my ditto form has my waist measurement on it i know exactly where that elastic is supposed to hit and then i can add in i don't know probably cut what they have in half maybe one or two inches i will add in um there are some people who kind of just pulled theirs down like made the elastic a little bit wider pulled theirs down for kind of like a drop waist dress which is also really really cute you can do that with the dress relatively easily with the romper though that is also going to pull down your crotch line so that would look a little bit funny but with the dress you can absolutely do that really beautiful tester makes really really cute um it does look like i'm trying to look at just the shorts versions but it does look like there is like the rise and all of that stuff looks really good in all of the shorts versions i'm not seeing any wedgies i'm not seeing any camel toes um it looks to be just about right so i'll be checking that against my crotch curve and my crotch depth um and see where we go from there so that's what i have to say about fit but i encourage you there are so so so so many tester versions so if you want to see them on a bunch of different body types styled a bunch of different ways dressed up or dressed down solid fabrics print fabrics um you can do that there's someone there's some people who did like so it looks like separates where the top is a solid color and then the bottom is a separate is a different color um that's a really cute idea again if you're using up your stash you only have a little bit of a couple fabrics you can do them that way so go check out the tester makes they all look pretty good um i'll be doing my usual pant adjustments um and then probably shorting the bodice a little bit so also pay a lot of attention to the types of fabrics people are using it doesn't say on there but you can definitely tell what's a drapery or fabric and what is more stable i 100 prefer a more stable fabric in a romper because the short because it is going over your bum through your crotch if it's too thin i almost just kind of feel a little bit naked almost like this feels like i should be wearing it to bed you know it doesn't feel like very comfortable to go out in and then on top of that something else to consider with your thin fabrics is that the pockets are probably going to look a little bit sloppy in a thinner fabric i might be eliminating the pockets altogether i just find that pockets on a knit i just don't really love it unless it's a super super stable knit um especially on my thighs i feel like the pocket bags kind of bunch up and it's just really not a cute look so take a look at these tester makes pay attention to those few details and decide for yourself the kind of alterations that you want to make there are quite a few people who left the um pockets off um so that maybe there it's easy maybe it's even in the instructions on how to do that um but because i have a fuller hip yeah the knit pockets are just really really tough for me um i also want to say there's a little girl's version so if you wanted to do a mommy and me thing that would be so so so sweet okay let's talk about fabrics so i pulled three fabrics from my stash all three in different sort of weights all three different substrates so let's talk about the good, bad and ugly of each of them none of them unfortunately are like an obvious choice so i'm a little bit nervous about that um but i'll talk you through all of them then you let me know in the comment section below which one you think i should use i'll heed your advice consider it deeply and then ultimately make my own decision how does that sound okay so let's start with the one that i think is the least good option and why so this is a really beautiful double brush poly i got it from soso english fabrics a couple of years ago um double brush double brush poly if you don't know it is super super soft super soft hand feel it's soft on the right side and the wrong side double brushed um it is kind of lightweight it's more of a midweight a midweight knit for sure but still has some really beautiful drapes some of my favorite dresses with like circle skirts and things like that are made from double brush poly and it's really really nice the problem with double brushed poly is that in the summer when it is very hot and humid here i don't know that i want to be wearing 100 polyester it's probably not going to be that big of a deal but i say that and then i make this and even if i make the tank top version it's you know one of those things where i would feel like i wouldn't really be reaching for it in the summertime because i would just feel like it's too hot too clingy too stuffy feeling um and so i think i would rather save it in such a beautiful color too um and i'd rather save it for like a fall pattern um something maybe probably even a dress i mean this could be a fall pattern with the um like cropped pant i think that would be really cute in this or maybe i could make the dress version in this and have that for like spring and fall i just don't know that it is what i want to make this sunday romper out of because it's already may and june july august as we know are sweltering um humidity like 70 80 90 humidity um 90 degree temperatures so that's why i think i want to pass on this one for now there will be other versions of this and like i said i might end up making it into like a little dress that i could throw a little jacket on and that now i'm wearing it you know october november february march for for good months aware um and maybe extending that a little bit too depending on you know how the weather fluctuates during the transitional months okay the next one is this um midway cotton jersey from stalmaker fabrics as a substrate this fabric is perfect 100 exactly what i would want to make my romper out of it is stable um it is a look it's a midweight um it doesn't have a ton of drape which we're not really looking for for this pattern um it's really soft comfortable cotton jersey it's like if you made a t-shirt romper it would be that but a little bit wavier than that the problem that i have with this one is that it's the color the color isn't very summery it's kind of like this maroon like almost with like an orange tint to it again super great for the fall i think this will be like as an example when i told you guys earlier the tank version with the pants and a solid color kind of like a neutral you would wear it over and over and over again you could match it up with all kinds of different jackets and cardigans and different cover-ups and wear it on its own and you would have something that you would reach for all the time that's kind of how i see this i don't see this as a summer thing though so both of these actually would be those kind of fall spring transitional types of garments if i made the romper out of either of these in a perfect world i would go to stomaker fabrics and get this in a spring year color they have like 45 000 colors of this not really that many they have a lot of colors in this i think in the 20s um so i could easily find a color that is more springy that's the same fabric that i use for my stalemaker fabrics spring style tour the um little crop top that i made same exact fabric so i know i would love it um in a lighter color but i am really trying to not buy fabrics for sew together that's why it's like an added challenge it's supposed to be like a little bit difficult so the last thing i have is this guy and i don't know where i got this um i think i got it in new york city i don't exactly know where it's a really really pretty print i absolutely love the print i think it's really cool on my skin tone um but the problem is you can see kind of how drapey it is right pretty drapey pretty thin um it's the thinnest of all the options here so i just don't know how that is going to lay over my body as i'm doing stuff like this it's not that bad i just want to make sure that i'm not going to feel naked when i have this on as a romper i want to feel like it's not one of those things that just feels too flimsy you know what i mean you guys go buy the sunday romper from love notions um their patterns are 40 off and until may the 10th um which makes this pattern seven dollars and 20 cents um get it printed shop your stash regarding your fabrics you are going to be looking for something in your stash that is a they say light to medium weight uh uh knits like jersey modal cupra and rayon blends i personally for the shorts for the romper version would stick to midway jerseys for the dress version i think the world is your oyster and you can absolutely use those lightweight fabrics um just consider the pockets consider what happens you know what happens when you wear pockets if they either work for you or they don't that's it that's so together 21 for may let me know if you guys any questions about anything that i went over today if you are a hemsider you can come to the thursday uh zooms and show me there um but that's only open to threads and scissors um hemsiders so join and come chat with us in the zoom you can show me your fabrics and all that kind of stuff i also help with fitting during those so if you have any questions about that um i could answer all of those for you in our thursday zooms but that is it that is going to do it for me today i have a lot of thinking to do but i thank you all so much for watching and i will see you very soon bye


First of all it was very important to me to come to Interpol because I was in Lyon, it's impossible to come in Lyon without such a visit due to the fact that we are speaking more and more about exchange information to find against different types of crimes in the world. But of course we had in Paris some hours ago a meeting of the coalition at work in Iraq and in Syria against Daesh, against the so called Islamic State. And from Belgium we have seen a lot of French fighters coming from Belgium and going to Syria to Iraq and unfortunately we have commemorated some days ago the first anniversary of the terrorist attack against the Jewish Museum in Brussels. So I have said during so many international meetings that we need first to exchange more and more information that I was very pleased to see that it's the case with Interpol. It's possible with Interpol to exchange with 190 members more and more information in different fields. And so I tried to explain that we need to do more. We need to do more in my country, like in others, but we need also to invest in some other parts of the world. I mean about the Sahel, about Central Africa, what other parts of the world to exchange more and more information. So I was very pleased to discuss with the Secretary General and his team to see what are the possible positive evolutions in that direction, exchange of information.


In a triaxial test, a sample was consolidated, sigma 3 equal to 700 kilo Newton per meter square. Now, one of you should have asked this question that why we are so particular about selecting a sigma 3 at 700, 200, 300. So let me repeat, suppose you are taking out a sample from this point which is at a depth of z and what we are trying to simulate is by doing a triaxial test. The state of stress which the sample is exhibiting at this location, clear. So if I know the gamma d value of the soil sediments, I know the depth at which I am working. So gamma d multiplied by z is going to give me some idea about the sigma 3 value and this sigma 3 I am using for confining the whole sample. So the best possible simulation of the field conditions can be done like this. Well, there are a lot of limitations, everybody knows by the time you bring the samples and all. Now, let me introduce here the concept of back pressures. So in a triaxial test, a sample was consolidated at sigma 3 equal to this, consolidation is over followed by when I was discussing the schematic diagram of the triaxial testing, I had shown you a port which if I open, I can drain out the water during drain conditions. If I close it, it becomes undrained condition. I need another port to pump in saline into the body of the sample the way doctors do. The question is why we are applying back pressure to the sample. So that means if this is a sample, now rather than taking out something, I am applying a back pressure, now this could be done either by passing a gas or a fluid depending upon what is that you are working on. Mostly we apply water and we pressurize the sample from inside. You are doing testing at sigma 3 to begin with, clear? If the sample is very fragile and if I shear it from this point onwards, what is going to happen? This sigma d might result in instability of the sample itself or sometimes sample may get crushed. So what we do is we apply a manipulated pressure from the inside of the sample and what it is doing? It is getting added up to the port of pressures which are developing in the sample, clear? So this goes and becomes a part of the port of pressure in the sample. So I am basically taking care of the health of the sample, nothing more than that. Another possibility is it might so happen that my samples are not saturated and being a third year student whatever you are studying is the class of problem which is known as saturated soil mechanics. Unfortunately all this triaxial testing is not valid for the unsaturated state of the material, clear? So if you wanted to do the direct shear strength parameter analysis for the soils which are unsaturated then you have to come to laboratory like ours where we have facilities of doing unsaturated soil testing. Otherwise on conventional test setups you cannot do unsaturated soil samples. So this is where you can do a manipulation and the manipulation is I will saturate the sample by applying back pressure so that it falls into the category of saturated soils and camouflaging the situation in such a manner that unsaturated sample has become saturated and I will keep on doing the test, that is it. So this is the purpose of applying back pressure to avoid collapse of the sample, clear? So truly speaking now what I have? I have sigma 3 minus back pressure which is positive, number 1, fine? Even in your gas hydrants also this is valid. So we just make some finite difference let us say 10 kPa or so to make the sample stand over there and rest of the things are same. So let me now continue with the system. So I have introduced this concept of back pressure into the sample and what it does. Similarly apart from the physical integrity of the sample, it goes into the pore water pressures. Let us start this story again. Now having done all these things thereafter with drainage not allowed that means it is a undrained test, typical undrained test. The cell pressure was raised to 800 kilonewton per meter square. Sometime back I had introduced this concept of stress paths if you remember. I had drawn some arrows which were touching the Mohr-Coulombe envelope, clear?  Now where all these things are going to be number 1 valid? You are seeing in bombasticity a lot of basements are being done everywhere. So this is the ground surface, this is the soil mass and my client says that I want to construct the underground facility over here. What has happened to the state of stress at this point from initial to final? We call it as a remover, clear? So that means at this point your sigma z and if I write incremental form it becomes delta sigma z and this is becoming less than 0, excavations delta sigma z becomes let it be sigma v. This z is also fine as long as I consider this as z direction no problems, clear? Or make it v because we have been dealing with v. So delta sigma v is less than 0, clear? So it is decreasing. I hope you can realize having done all these things rather than increasing the sigma 3 I would have brought it down to value less than 700 also. If I really wanted to see the response of samples, I would have tested that sample at 500 kilo meter per meter square sigma 3, you got it? So truly speaking what we are doing is we are simulating exactly what is happening in the nature in our laboratories on the specimens, fine? Another possibility would be you are doing a big embankment over here apart from this excavation, do not mix it together otherwise it becomes quite complicated. So what has happened to the state of stress at this point? This point I hope you understand delta sigma v has become greater than 0. So I want to understand now what is going to happen to the stability of this foundation system whether this facility can be built over there or not and of course the third situation would be you have very good neighbors who always like you, so you are constructing something over here and the next plot there is a deep excavation going on. Beautiful case of litigation, fine? Because you know what is going to happen. Now this is a beautiful geotechnical engineering problem, 1, 2, 3 all put together, how would I simulate it here and see how the material is responding that is it. Now how I do all this stress and all is a different issue altogether, concepts are simple. So starting from this undrained situation we have raised sigma 3 to 800 kPa or kilo Newton per meter square and there is a pore-water pressure equal to 445 kilo Newton per meter square as a result of this torture. Now we define a term which is known as B parameter, we have been talking about the pore-water pressures all the time and in my last lecture I think I gave you an idea that pore-water pressure come constitutes of two parts, the first part is during consolidation and second part is during shearing, normally we call them as u1 and u2, B parameter is normally used to understand what is the state of saturation of the sample. So this is equal to delta u by delta sigma 3, if you read the problem carefully what has happened is the final pore-water pressure is 445 minus the back pressure you have applied is 350 divided by 800 minus 700, yeah this is 95 correct. Now this is the catch, first part of the triaxial testing is done to understand what is the state of the patient and what I should be doing with it, though we have already applied the back pressures, by applying back pressure I have got a B of 0.95 for your information if B drops less than 0.8 it becomes unsaturated state of the soil, so who knows, the guy must be aware of this and in order to bring the sample to the saturated state all this has been done. Now the second part of the problem is relatively simple, having done all these things and this corresponds to from 0.95 to 1.0 range is correspond to saturated sample, so state of saturation of the sample was achieved by back pressure. The axial load was then increased, remember the axial load can be increased just by shearing the sample by lifting the whole thing from the bottom at a constant rate of straining, give a deviator stress of 575 kilo Newton per meter square, while the sigma 3 remains constant even sigma 1, sigma 3 will also vanish and we will be using only vectors which would be termed as state of stress or stress paths to deal with the problem, clear. So all this goes in the background and what I will do is keeping sigma 3 constant means delta sigma 3 is 0 from this state onwards and hence I am going to shear the sample keeping sigma 3 constant. At this state the pore of pressure reading comes out to be 640 kilo Newton per meter square, remember we define the term parameter A and A was the response of the material to U D upon sigma 3, is this fine and the way we read this is, this is the efficiency factor how much sigma 3 you are changing and what type of pore of pressure develops in the system during undrained shearing, so that is what is being done, the axial load was increased to give a ds of this much and the pore of pressure is this much compute the parameter A. So if you do quick computations you will find the parameter A comes out to be 0.339, now this parameter A I will be defining as A prime and A prime will be equal to A into B, so from here I will be getting A as A prime upon B and this comes out to be 0.3570, these are the nomenclatures you have to just remember, A is defined as delta U divided by delta sigma 1-delta sigma 3 and later on we will derive an equation which is known as Schemton's pore of pressure equation where this total pore of pressure can be written as delta U equal to delta U1 plus delta U2, now this is equal to B delta sigma 3 plus A into B which is equal to A prime into delta of sigma 1-delta sigma 3. This can be simplified as B delta sigma 3 plus A delta sigma 1-delta sigma 3, this is what is known as Schemton's equation, for saturated samples B is 1, so if B is equal to 1 for saturated samples this is how you characterize the soils, A parameter will become delta U-delta sigma 3 divided by delta sigma 1-delta sigma 3, understand the philosophy, delta sigma 3 is appearing both in the denominator and the numerator correct, so truly speaking delta sigma 3 nothing is sort of a cushion of the sigma 3 which you have applied and A parameter is nothing but because of change in delta sigma 1 and sigma 1 is coming from the sigma D because sigma D is equal to sigma 1-sigma 3, incremental form would be delta sigma 1-delta sigma 3, the moment I say sigma 3 remains constant delta sigma 3 gets knocked out, so this becomes delta sigma 1 and A parameter is nothing but the pore of pressure which is getting developed because of shearing process, so we use two parameters A and B and A prime to characterize the soil, the results of on the same material a series of, so by doing all these analysis what we have established is the sample is saturated only by applying back pressure, we have make sure on the soil the results obtained are, I hope you understand the meaning of these notations F, check this, be careful and see what I am writing over here and what is the significance, yesterday also we discussed this thing, what type of soil response is this, these type of dubious materials are OC materials and that is the reason we do not depend too much on OC materials and the OC response, there is a switch over, you are right, so if you remember we plotted A versus percentage we explained NC and OC, clear, so the OC character is Delhi Dalai, it switches over and shows instability, now rest of the problems, problem is simple whatever we have discussed until now, so you determine the shear strength parameters in terms of effective stresses and plot the variation of A as a function of OCR, if the pre-consolidation pressure happens to be, so for your quick reference OCR is sigma C divided by sigma 3, the pre-consolidation pressure alright, a very close look on the system is going to tell you that if I would have decreased the value of sigma 3 the response would have been something like this, so this is sigma C prime, this is OC response, this is NC response, NC response gives you only 5 and this gives you only C prime alright, so everything is dependent upon sigma 3 and if I extrapolate this thing to the one consolidation, one dimensional consolidation, this goes further down, this becomes your NC behavior, if I consider 2 points 1A and another one B at a given sigma prime value, so this corresponds to point number A and this corresponds to point number B, what it indicates is that the shear strength is a function of inverse of void ratios, this is okay, so from all sides we are safe, we have prospect like this 5 prime is 25 degree, C prime is 30 kilo Newton per meter square, this is the first time we are plotting AF versus OCR until now we have been plotting A as a function of percentage strain, so what you will be getting is this graph is useful for the designers, so we have discussed 5 types of triaxial testing problems, I hope I have given you enough ideas about the how to interpret the results, keeping in mind the material which you are using, the stress range in which you are working and the objective of doing a project.


What is going on guys, welcome back to the channel and I appreciate you being here. Today I bring you another Destiny 2 video and today I want to talk about the Dreadnaught returning for the Forsaken DLC. Now there has been a lot of speculation on this matter and with actual gameplay footage of what looks to be the Dreadnaught, people are now even more convinced it's a place that will return. But before we get into that guys, every single month to give back to my most loyal love subscribers I'm giving away a fully customisable controller for either Xbox or Playstation. To be in with a chance of winning it drop a like on this video and leave a comment down below and then to the gleam I'll link a link to the top of the video description for the giveaway. Fascinating for energy people good luck everybody. Okay so the Dreadnaught is a place we saw in Destiny 1 originally and here's a little information on it. Arocs used a Dreadnaught to travel to the solar system after learning that the Guardians of Earth had killed his son Clota. Upon arrival he positioned his ship in the rings of Saturn and promptly wiped out the defending Awoken's fleet with the ship's weapon. As a result of Oaks's assault on their base on Mars's moon Phobos, the Cabal sent their own infiltration unit, the Skyburners, to assault the ship seeking vengeance. The Skyburners rammed their ship, the Antalion Exodus 6 into the Dreadnaught and actually managed to breach the hull following the crash Primus to on, I think that's how it's pronounced, attempted to find and confront Oaks, only to be taken before getting a chance. From there, Valos Mool and Valos Talon attempted to overload the Dreadnaught's reactor but were stopped by a team of Guardians as the resulting explosion would have lightly destroyed the entire solar system. K-6 mobilized a Guardian to infiltrate their ship and establish a Transmit Zone allowing other Guardians to access the Dreadnaught in an attempt to end Oaks's and that's basically how the gates opened for us to invade and kill Oaks multiple times in the raid. Now the Dreadnaught is a place which, like many other things from D1, were left unexplained in terms of what happened to them moving into D2. Theoretically the Dreadnaught would still be there, so is it and will we actually get to go there in the Forsaken DLC? Well if we look at the end credits to Destiny 2, as you can see on the screen now, we actually see the Dreadnaught within the rings of Saturn, check it out. Something else seriously interesting is if we go to the Planet Titan and we look up into the sky, we can actually see the rings of Saturn, check it out. There's actually a cutout in the ring and in the direct centre of that people is a mini blip. Many many people are speculating that to be the Dreadnaught. I also think it is too, so it's there but will we go back to it? Well thanks to the epic people who follow me on Twitter to share new information back and forth. If you don't follow me you should, I do post news at the EPJC's where it is at. But yeah many thanks to you guys, I was forwarded some pretty interesting information, they're a snippet from one of the recent gaming format articles on Forsaken DLC as you can see on the screen now. We see this Titan running around on what looks to be in the opinion of many, the Dreadnaught. I mean just look at it, it is identical to what we experienced back in the day, full of hive, the design, the architecture, the ship, everything people. So is this the Dreadnaught? Well it does look like the place, but in my opinion I don't think it is people, I mean it would be great. There are slight connections with the Dreadnaught and the Awoken, as we heard earlier, Oaks used a Dreadnaught to travel to the solar system after learning that the Guardians of Earth killed his son Krota upon arrival. He positioned the ship in the rings of Saturn and promptly wiped out the defending Awoken fleet with the ship's weapon. So there is a connection there, but is that enough? I don't know. But I mean it looks like the Dreadnaught for sure, we can all agree on that. But it could just be a hive ship. We go here maybe for a certain mission, who knows, again though that few could work with the Dreadnaught. But for me a place as such as the Dreadnaught would be more than just a single mission within the expansion. The Dreadnaught will be a part of something of its own in my opinion, maybe its own DLC, or to think about it, could be a major influence over this DLC, which we just don't know about yet. But it is common people, it really is and this is why I believe that. If we go back to that cutscene, we see major clues into the actual DLCs and the order they've come. We see the light from the travel exploding into the surrounding universe. It first hits Mercury people, the cursor of South DLC was based on Mercury, then it hits Mars, while the woman DLC was based on Mars. Then it hits the reef, and we own all the major space within the four second DLC. It's the reef and then we see the rings of Saturn with a Dreadnaught within them. And in the end, out of our galaxy pretty far away, we see them triangle ships, which we don't know much about at the moment. But we do see it hit the Dreadnaught, after it's hit the reef, after it's hit Mars, after it's hit Mercury. So if we go by this order, which has been 100% accurate so far, the Dreadnaught is common people. But upon thinking that, the Takendu play a major role in its DLC, we have seen the corruption spoke by them and the Dreaming City. What are the Takendu there? Why are they there? Does the Dreadnaught hold any clues? Hence why we go there in the expansion maybe? It kind of makes sense if you do think about it like that. If you haven't heard, upon defeating all eight parents within the four second DLC campaign, and finally facing off against Uldren, we actually learn at this point in the campaign that a greater threat is out there. It's then and only then do we get to go to the Dreaming City and as soon as we land upon the Dreaming City, we are sucked into a realm of the Taken. It all does make sense for sure, but at the moment people without actually confirmation, we can't say it's factual. Facts are though, the Dreadnaught is there, the Taken are there, the four second campaign beholds a greater threat. What is that threat? Does it have something to do with the Dreadnaught? Well, people, we would just have to wait and see. Another thing which basically confirms the Dreadnaught is returned is the fact of the datamined audio files from way way way back, from Destiny 2 by the way. Many of these audio files contain information regarding the Dreadnaught via in-game vendors. Here, take a listen to some of them. The Vigilant Guardian. The Dreadnaught will test your light. The Dreadnaught must be understood and New Monarchy plans to be at the forefront of that understanding. Back to Oryx's floating tomb then. Without your efforts, we'll never understand the Dreadnaught. Interesting. The Dreadnaught is full of surprises. Your light must defend every inch of the Dreadnaught. Good. Good. I can't imagine the horror you've seen on the Dreadnaught. You and your ghost are brave to risk boarding that ship. Well, what do you think about all of this? Do you think the Dreadnaught will return? Do you think it will be a major part of the suspension which hasn't been discussed yet, or disclosed yet? Or do you think the Dreadnaught will have its own DLC for Destiny 2? Let me know your opinion on this down below within that comments section people. But on that note, we have come to the end of the video. Thanks as always for stopping by. If you enjoyed the video, leaving a like really does help me out and I do appreciate that support. If you're new anti-hat and enjoy daily Destiny videos, be sure to subscribe. And hopefully people, I will see you on that next one.


This is awkward. I don't actually know even how to start this video because I can't say hey boomers anymore Because now the boomer meme is totally popular and cringe like normies have gotten their dirty little hands on it So I feel like I can't say it anymore I think I think uniboomer is still okay because they don't know about that yet, but calling each other boomers utter cringe So here I'm doing normally normal stuff normal life stuff. So if you're wondering why I haven't put up videos It's just because I'm not the person who forces videos. I have stuff to do And I'm not gonna like you I'm not the kind of guy who pretends to put things on every day You know videos that don't really matter. I haven't had things to make videos on so I haven't been doing it But I will have pretty soon. I'm actually here's my normie work. I've been Fixing this circular. So I don't know how old this thing is it actually already looks a lot better from what it was It was absolutely disgusting now my hand is disgusting So what am I gonna be doing? All right, I'll go ahead and say what I was gonna say in this video I don't want to ramble on too long because that would be cringe But if you've been following me on github or anything like that I've been committing a whole bunch of stuff and making a bunch of changes and if you use larbs if you use my dot files Some stuff might have broken if you use my wizard some stuff might have broken Just make sure you're using the most recent version Because I'm making a whole lot of changes within the past, you know 24 hours or so Why? Let me explain So I said that you know I had two versions of larbs one for Arch Linux and one for void Now I'll go ahead and tell you I'll probably do a video on this later But I'm not actually using void Linux anymore. I'm actually the thing is I cannot I could not leave the AUR So I'm actually using artix now. It's just Arch Linux, but but it uses a run it like void Linux And you know, that's fine. I find it really hard to leave the AUR. I guess But so my larbs grip actually now I'm working it so that it can be installed on pretty much any I mean not any distribution, but at least the big ones Arch based distros maybe Ubuntu base or Debian based distros if I have some to test it on But also void Linux as well. I'm trying it on the Arch distros right now So it should be sort of working and I also basically just merged the i3 and the DWM desktops, I mean not I mean obviously you can't have both at once But you can choose between the two now And it's all it's all the same script It's just easier for me and it's a lot of people have been Disappointed not disappointed, but they like i3 they want to stick with i3 and they like my dot files And they don't like it that I'm using DWM or whatever So basically now everything's in one place. You can just make your own decisions and choose which one you want by default So that's what's going on there if you've been confused by that I know I've gotten emails from people saying it oh this and that broke and I've been fixing them and stuff like nothing Nothing is terribly wrong. I know that I you know, I'm working on it But just know that that's happening Let's see anything else I'll go ahead and tell you some norm not again like real life stuff I am here. So here's my house. Let me show you my house. Well, actually you've seen some of this I think I took you guys and some video out there to my Firepit over there. I actually have another one here now I don't know if you can actually see that because I can't see oh, yeah a smaller one here next to my hammock Anyway, this week this week is Thanksgiving week, which means I don't have my day job So I'm gonna be doing a lot of stuff this week One of them is that I want to build some raised beds. That's something I've been talking about for a while I didn't do it earlier because I was just sort of waiting for the spring anyway so I'm gonna do it during the winter and I'll either be doing that this week or During Christmas break and now what raised beds are if I don't know you guys don't know Basically, you know you plant stuff in them except for you know, you could just plant stuff in the ground raised beds are They're just a little raised up for different reasons It offers some advantages that sort of I don't know highlights to the garden and stuff like that And depending on how big they are how tall they are you can protect them from animals and stuff like that So I'm gonna be building those again either this week or later in the winter just before spring I'm still deciding originally I was gonna build them out of wood and this week during Yeah, I'm originally I was gonna build them out of wood But I think I might actually go with cinder block now if I can make it look nice But either way I got to spend some money on that because you know, I can get some cinder block for free But not very much But this week I'm gonna be a total consumer even though I'm middle living out in the middle of nowhere I will actually unironically be participating in Black Friday Just because there are a couple big big ticket items I need That I really want to get a sliding compound miter saw and there's one I was looking at you know Harbor Freight's like higher-end, you know, they have what is it the Hercules line now Which is supposed to be like competitors with the vault or whatever But I was thinking about getting that miter saw and it's gonna be going for around 300 bucks And of course that's pretty if it's actually as good as people say and people have been saying it's pretty good That's a pretty good deal for that especially because I wouldn't just be using that for if I make my raised beds There's some other things I want to build But on it long term I want to build like a house and kind of stuff like that now, of course I have a house, but let's just say I have land to spread out on that I'd like to use and you know, there's the stuff I want to do I'm gonna build built shelves. I'm gonna build.  It's because I mean, it's really for no other reason other than You know, I just haven't been particularly inspired to do them. I don't force videos I probably I've had the time frankly. I have been working a nine-to-five kind of job Actually, it's more of a seven-to-three kind of job But I have had enough time to work on them. It's just like I've been doing my own stuff But this weekend I got really back into Making changes to my dot files or not really making changes to them But just like making them more co-making them more usable by people like By people like you I guess Anyway, oh, yeah, so I have I have like random pots all over the place That's just a pot. So I want to see how well now around here. Now. I'm just rambling. Okay Around here in sort of northern florida the ground like the soil is basically all sandy So I've been experimenting with how well things grow. So that pot it's literally just a much of sandy soil And I threw beans in it and I'm seeing how well they grew Or over there I got some oh, this is like the easiest thing in the world to grow like when you have like green onions My uncle had some of those and he you just get so much if you just put green onions in the ground I mean go to the store and buy green onions for a dollar and then put them in soil And they'll grow forever. I got some other things here got some peppers then I got from some people Uh got my spices and stuff like that, you know, anyway, it's not super interesting But once I get all this once I get the raised beds built. I have like so much stuff. I want to plant I'm ordering like some seeds Uh for a bunch of stuff that really just is I expect to grow relatively well And I do when I plant some trees and stuff I'd really like to have olive trees now. I do have some trees. I think I mentioned in my last videos um this right here And now this of course is not in season as you can tell by the fact it literally has no leaves But this is a fig tree. I have two of them fig trees changed my life Okay, I don't think I mentioned I thought about doing a video on it because literally during june and july In sort of august I would go out here every single day this one and I have a bigger one in the front yard And I just be able to eat figs like for breakfast like non-stop just until I'm sick of them because they just produce so much So I had those and I also have two pear trees one over there and one over there Um and the pears aren't are a little less edible, but you know, that that's how it was I mean, I they really need to be pruned early on so they get nice and juicy But I wasn't here in time to prune them And I think I mentioned in my last videos I do have grapevines as well, but only one of them produced these weren't pruned Either last year so only one of them produced at all And there's a bunch of other stuff here, but um, I got some loquat trees that I'll be seeing if they produce In the spring. I think that's when they come out, but I've never really had loquat So I have like a lot of them. I think I have like 12 or something like that. It's ridiculous Uh, all right. Anyway. Oh, and I got a pecan tree now and see now I'm just talking now I got a pecan tree or at least at least the baby one that my cousin had in his lawn And he wanted to get rid of so I took it but that's in the front front yard I'm not gonna walk there. All right, so that's just a random That's a series of things that came to my head. Some of them might be relevant to you. Some of them might not Uh, so I will be doing some videos on a couple things Uh, just software I've started to use that you might be interested in And if I actually start building this stuff soon, I'll probably do some videos on that and uh, yeah, whatever All right, see you can't call you boomers, but I'll see you guys next time Unibomers