So, first of all, thanks for having me and special thanks to Michael for extending my session from half an hour to an hour. So I'm going to talk to you guys for at least an hour. So we're going to talk about the multi-generational RU. And my name is Yu Zhao. I'm from Google. I've been working on multi-generational RU for about a couple of years. And so let's start it. So I'm going to touch on some fundamental stuff. Probably not that interesting, but I think it's important. So the fundamental role of RAM, basically, touring machines do not need RAM. And the role of RAM, basically, is to cache information for immediate use. And it's the same role as CPU cache, but it's lower speed and cost. So an example would be a smartphone with that RAM, if it could work, would be still faster than early mainframes. So I still picture from Wikipedia. You can see here, this is a touring machine. It's pure mechanical. So while we care about RAM efficiency. Our observations are the speed gap between RAM and storage, likely to remain large. And also the RAM price unlikely to drop drastically in a foreseeable future. Also the memory used from complex workloads, something going to keep growing. And the prediction is, our prediction, of course, RAM will continue to play a major role in performance. So here I have a distribution that illustrates our current memory utilization dilemma. Basically for a given workload at a different time, it uses a different amount of memory. And so the why access is the possibility of the memory usage, whereas for example today it uses 100 meg, and tomorrow probably going to use 200 megs. And so the access is the utilization configuration, all the usage. So for such a workload, we definitely have to over-prevision memory. Basically we have to give this workload, let's say on average it requires 200 meg. And we have to probably configure 300, even more memory. And the green part is the profit margin. And the yellow part is somehow, no, we just hit a wall and have a long latency. And then when we reach the red part, we're going to have own chaos and live locks. So that's why we care about RAM efficiency, because more efficient than higher profit margin. So two fundamental problems of RAM. So the first problem or challenge is what object to cache. So that's why we need RRU to decide what object to cache. And the second fundamental problem is how to cache more objects. So basically we have external and internal limitations. And that's also why we use ZRAM or Compaction to reduce internal fragmentation and external fragmentation. So here I have two diagrams. The one on the top illustrates how RRU works. Basically we want to keep red objects, reddish objects, basically hard ones in RAM. And the code objects are bluish colors in disk or slower storage. So the picture on the bottom shows fragmentation. So for a single page, if you look at this single page, we say, OK, user space requests a 32 Mac allocation. But on the hardware, I can just give this user space a 32 bytes. So it has to give this user space a program, a 4K page. So the rest, unused part, basically is wasted. That's the internal fragmentation. So if you look at the entire RAM, so different allocations have different orders. And they have different codeness, hotness. And that's external fragmentation. That's also why we try to allocate huge pages. Sometimes, you know, our allocation fails. So MGRU and this goes, so there are three major goals, simplicity, flexibility, and performance. So OK, probably I should go take a step back. So what exactly is MGRU? In very simple words, probably crude, it's basically we partition memory into more buckets. With the active and active RAU, one I have two buckets. So the bluish colors mean code memory. And the reddish colors means caught memory. So here, on the left, we have one red purple color, another the other blue purple color. So that's how generally active and active RAU works. And then on the right side, we have five buckets. So we partition the memory into more segments. So each bucket contains different kind of different code hot pages. That's basically how MGRU works. And OK, next, questions so far? OK, cool. Now we're going to look at MGRU internals. So there are three components. Generations, page table walks, and feedback loops. So this big picture shows how generally MGRU works. So there are two hands here. Basically, this is a clock. There are two hands. So the first hand, which is the red one, we call the agent. So this hand basically goes into the MM list, at least here, to find out, to gather all the access bits from page tables. So that's the page table walks.  This one walks the page list, physical pages, to evict pages. And at the same time, for each page, it also walks our map to check the access bit again. So basically, we check the access bit at least twice. So where are the generations? So here we have grouped physical pages into dotted squares, these three. So these are actually generations. So the first generation, which is the oldest one, born at T0. And the second one, it's the previously youngest, but now it's in the middle, and it's born at T2. And then the youngest generation born at T3. So these are generations. And for each physical page, we have a generation number counter in the page flex, or folio flex. Now it's called folio flex. Sorry, I should use struct folio, not struct page here. And so this number indicates which generation this page belongs to. So on the aging path, if a page has been accessed, we update this generation number to the youngest. OK, basically, we tag this page. OK, this page is a hard page. Don't evict it. On the eviction path, but during aging, we don't really sort this page. We just only tag this page. Now after tag this page, this page is in the wrong bucket. So on the eviction path, then we sort this page. We say, OK, the bucket number is, let's say, 1. But this page, the generation number counter of this page shows this page actually is 2. So we move this page to the bucket number 2. So that's when we sort this page. And then after we sort all pages that have been accessed, then the pages left are code pages. Then we're going to evict those pages, code pages. That's generally how it works. Questions? OK, so here is a question. Why we want to walk page tables instead of just user because when we walk our map, so we walk each page on the IRI list. And those pages are physical pages, right? They are not necessarily mapped by the same process. Usually they're not mapped in the same VMA. So let's say we have two pages from two different processes. So on the IRI list. So to work the first, to work the IRI map of first page, we have to go into the page tables of process A. Then for the next page, it isn't mapped in different process. So we have to switch to another set of page tables. That costs a lot of cash basis. But because these pages are not mapped consecutively within the single watch address space. So that's why we want to walk page tables. But when we walk page tables, we could see a lot of empty page tables, right? Page tables basically there are not freed and nothing in there. How do we solve this problem? So we use, that's the next slide. So we use balloon filters to store dense, hot page tables. If we have hot page table, OK? And OK, if we have page table, OK? If there's only a few pages mapped in this page table, we definitely don't want to walk this page table, right? We're not going to store this in the balloon filter. If we have another page table, and this page table maps a few pages from node A, maps another, new model A, maps another few pages from node, new model B, and then so on and so forth. So we also don't want to add this page table page into balloon filter. Why? Because the reclaim domain is per node, per memory C group, right? So when we talk about reclaim, we are only concerned with a single node at a given time. So if a page table contains a lot of misplaced pages, we definitely don't want to add a balloon filter because that would mean we have to scan a lot of pages that are not eligible for reclaim. And why is this balloon filter, why have we had two? These are balloon filters. So I'm going to explain this later, OK? Why is this a feedback loop? So let's say first time we scan this page table. We don't see that. We see, OK, this page table is not that interesting. So we're not going to insert it into the balloon filter. And then how do we make sure next time, how do we make sure after the process that owns this page table has mapped many pages into this page table, has updated the PDEs in this page table, we're not going to miss this page table? So we have to find a way to notify the page table worker that, OK, the process that owns this page table has updated it. And now previously, it was sparse and uninteresting. But now it becomes dense and hot. So you better walk it. So we make this discovery when we walk our map, right? Because eventually we have to walk our map because we need to unmap this page. This is something that we can't escape. So when we walk our map, we say, OK, so this page table seems very interesting. It has a lot of relevant pages. And probably next time when you walk a page table, you should just cover it. So then this our map walk as this page table, which is pointer, pointer to this page table, the balloon filter. So then when we walk page table again, so we test whether this pointer to this balloon filter is in this balloon filter. OK, yes, now it's in this balloon filter. So the page table walk going to cover this page table. So that's basically, that's why it's the feedback loop. So the second one is the PRD controller. So in addition to aging process, we also have eviction, right? So after we evict the page, we want to know whether a page is going to refold if it refolds. So what information does this tell us? Does this even tell us? So it means, OK, probably we have made a wrong decision. So we need to self-correct. How do we set self-correct? That's where the PRD controller fits in. So there are some details I'm going to skip, because I think we might not have enough time. But if you have questions, please feel free to stop me at any time. So now I'm going to move on to the next step. So one of our goals is simplicity. OK, apparently I miss about simplicity, as I put it simplified here. And so I think for some of you who have, OK, go ahead. Yeah, I had a question. If you can go back one more slide, I think. So in the bottom left, the promotion. So it's just a question of understanding. If you have, say, five generations, right, and you're aging a page that's in the oldest generation, and you see it's referenced, do you promote it one generation up, or do you put it all the way into the youngest? So that depends on the type of this page. If it was accessed through page tables, then it would be promoted to the youngest generation. So we just got to skip everything between this current generation and the youngest generation and go to the youngest generation directly. If it's accessed through a file descriptor, then it will be only moved to the next generation. Because this is based on the cost of evicting this page. Because if page fault has a higher cost, right? Evicting a mapped page has a higher cost, because we have to map this page, Flux TLB, and do those stuff, right? And if it's not mapped and it's clean, then we could just simply drop it. So also the access bit itself is not that accurate. So when we see the access bit set, right, this page could be accessed like 1,000 times, even million times, right? But for a page accessed through a file descriptor, so one access is one access. So because we have a whole function called a marked page access, so every time when we go through F open, F read, then F read is going to go into marked page access. That's definitely one access, right? Not more than one, definitely, right? Yes, yes, right. So I think probably yesterday we talked about the XFS red page part, right? Because file system people, they don't like memory management or page reclaim goes into a red page. Basically, we, OK, so when the memory pressure kicks in, right, we see a dirty page first time, we mark it as page reclaimed. So we say, OK, at this time, probably there are other clean pages we could drop. So that's not a worry about it. So next time when we see a dirty page, marked with page reclaimed, we'll try to, OK, key swap D, we'll try to write it. And then it will cause a callback function from file system called a red page, I think. It's not red pages, I think it's red page. And this red is out of line writing, right? That means, OK, probably file system will think, OK, why do you want me to write a single page? And there's a lot of work to do, right? It's a lot faster to write a bunch of pages. So with the MGRU, actually, we don't really write any pages. So if we see this page is dirty, we just simply move to the next generation. We mark the dirty, and then move to the next generation. So then when the red back is triggered, so that's when the dirty results hit. So we have dirty ratio to control how many pages are dirty and how many pages must be cleaned, right? And managing an RREU helps to maintain a healthy dirty ratio by setting page dirty, by calling set page dirty. So when it walks page table, it sees a dirty bit set, but it just calls set page dirty. So this way, if the red back doesn't happen in time, then we still can maintain a healthy dirty ratio. So basically, red back walks our map and to clear the access bit, right? But instead of clearing the access bit, we don't, sorry, to clear the dirty bit. Instead of clearing the dirty bit, we don't really clear it. When we say it, we just call set page dirty. Yes? Sorry. Yeah, with the generations, so where I'm coming from is when you look at how garbage collection uses generation, right?  What they do is they usually, it's based on the idea that the longer something has been in use, the more likely it's going to continue to be used. So everything starts with those things, everything starts in the oldest generation. And when we find it referenced, we promote it up by one generation. And if it's referenced again, we promote it another way. And so the longer it's been around, the less likely it becomes to be reclaimed, right? But if the map pages start out at the youngest, and if they get referenced anywhere on the lower generations and you didn't promote them all the way back to the youngest, what do the generations buy you? Like, say you have a difference between one configuration uses four generations, the other one uses five. If everything's promoted to always the youngest, what does that end going up buy? Yeah, very good question. And I answered just after I collected one more thing. So in terms of garbage collection, so here's also actually reuse a similar idea which is when we run the agent, so everything actually slows down because we have to walk page tables, a lot of work to do. But comparing with suffering a little for a long time, we only suffered, okay, we suffer a lot more, but for a very short period of time. So that's basically we bench a lot of things and then solve it very short period of time and then, okay, everything is good to go and you can't reclaim everything. So back to your question. This is really very good. And this is something I'm gonna actually explain why we want generations. So the first goal here, unfortunately, again, I miss about simplicity. So it's simplicity. So why we want to promote a page, a mapped access page, page accessed through a page table directly to the youngest generation? Then what's the meaning of have multiple generations? So I'm not sure if you have noticed. So when I posted the patch set, I called it the monitoring RIO framework. Why did I call it framework? Actually, the automatic goal is to allow everybody to attend it. This is based on the belief, my personal belief that once that's how it does not work anymore and that does not work anymore. So we have different, we have servers, data centers, VMs, laptop, computers, and smartphones, right? Even for a single platform, let's say a smartphone, we have memory configurations range from 16 gig to probably two gig, right? So personally, I don't think one side of it's all gonna work. So how about I finish answering Johanna's question? So, and we have generations. And with BPF, user can customize which generation a page goes, right? So what you suggested definitely makes a lot of sense for a lot of workloads, and I do intend to make the work, but also if we put this existing kernel, then that means we're gonna have additional work. So what I'm gonna do is, I'm gonna give you a BPF interface, right? It contains a PID, process ID, watch address. If you know the VMA layout, you know which VMA this page is from. And so whether the type of this page, whether it's a non-page or file pages, and the fault of this type, whether it's a refold or it's a fresh fault, and then some additional information, probably not that trivial. And so based on this information, you can choose which generation to goes. So with this, actually, we can emulate all the different IRI algorithms, I know of, that's the ultimate goal. So this idea actually is not my, I didn't came up with this idea. So I learned this from networking congestion control. So they added something for TCP, for TCP link, now when this gets congested, so it decides the, what to call, retry the back off, back off time, when to retry. So that's contrast control. So they have like seven or eight different contrast control algorithms, heuristics in kernel space, implant rating in C. So now they are moving those heuristics into user space, into BPF, sorry. So we can do this in two ways. First one is struct, BPF struct ops, which is like more complex. The user way actually is just a key prop. So I have this function, you can implant BPF program to override this, and whatever RIO algorithm you come up with, that's your private IP, and you don't have to share with me, right? And you can maintain your competitive edge. So that's the ultimate goal. Okay, so, okay, just if I understand right. So the patches as they are now, they're introducing the generations. The unmapped file pages are using fine-grained generation control. Right. So the policy for map pages is to not use them as fine-grained, but they're BPF hooks for future extension. Okay, I think I might have missed that when I was reading the patches. No, no, actually I didn't mention it on the mailing list because I think there are a lot of other things I didn't mention on the mailing list. Because that would be really useful to have, because I was like, okay, if it's promoting right away to the youngest, why all the generations for now, that would be really useful to have in the change locks or in like documents. Okay, because I were trying to limit our discussion within a manageable scope. That's why I didn't talk about this. But now, I probably, I think that was a mistake on my part. I should have explained this better. More questions? Okay, I'm gonna move on to the next step. So I think I did touch on this a little bit during our last meeting. And this is about the THP internal fragmentation detection. So also I think yesterday Yang asked another question, or probably suggested something, predictable scanning to detect hardware failure, poison pages. Sorry, I don't remember your exact question. This is a similar idea. So how much time do I have? Okay, I have exact half an hour. So when we use huge pages, right? And we have two problems, usually we have two problems. One is external fragmentation preventing us from allocating huge pages. The second one is internal fragmentation. Basically, we have TGP, never TGP, I'm the wise, TGP always, right? Let's say if your user space doesn't really support it, TGP, I'm the wise, doesn't use the I'm the wise, then only options left are never obvious. So a lot of user space application, a lot of workloads, for example, memcached D, Redis, they suggest we turn out, users turn off TGP. Why? This is because, A, TGP are not easy to, TGPs are not that easy to allocate because of internal fragmentation. The second problem, the second problem, which actually is like worse, is the internal fragmentation. After we'll allocate this huge page, right? This workload could only use 4K, 2 Mac huge page. This workload probably gonna only use 4K of these within this 2 Mac region. So we basically waste 511 4K pages. And that's not the worst part. The worst part is, if this 4K page is hot, so the access bit, we only have one access bit, which is in the PMD entry and put into this huge page. So the access bit in this PMD entry will always be set. So we're considered as an entire huge page hot, and it will be always at the head of the IRIU list. So we're never gonna reclaim it. And basically we wasted 511 4K pages. So this extension is gonna solve this problem. Basically when we start off, we don't map a compound page by PMDs. Instead we map this compound page by PTEs. That means we're gonna have 512 consecutive PTEs pointing to this compound page. This is still a compound page, okay? So this is not 512 4K pages. Then let's see, if this workload uses most of the space within this compound page, then good. We just remove this PTE table and then swap it with the PMD entry. So this becomes a true huge page. If not, let's say they only use one 4K page, but this 4K page is hot, okay? So when the system is an animator pressure, MGRU gonna look at this PTE PTE table, the 512 PTEs, then say, okay, actually there's only one page is hot and the rest, they're not only cold, they have never been touched because by looking at that dirty bit, we see the dirty bit is zero. So then we can just split this page, right? And then free the 512 unused 4K pages, only keep the 4K page as in memory. Does it make any sense? Yeah, just want to ask just for clarification. Is this something that you envision to happen or this is something that we are talking about code that already exists and you would like to get it merged with the rest of the thing? So it won't happen within two years, so that's for sure. And it's very likely to happen within four years, so basically between two and four years. Okay, I think that it makes some sense to discuss those things, but I guess one of the things that we should definitely spend some time on is what you've got currently and you aim to get merged. I'm not really sure where that is, general consensus within the group, how we should proceed on that. So it would be really great if you have some more extensions so that we can see how much that can or how much potential there is in there that's definitely valuable. But if you can spend or reserve something like 15 minutes to discuss those, what we've got right now, things as well. So okay, so let me go back one page before. So this extension gonna happen, if let's say I'm Jair Lanz in 519, so this is gonna happen within three months, the first one. So the second one, it's gonna happen sometime next year, early next year, but when I said two years, that means everything will be down in two years, it's very unlikely. Right, but now we're gonna start posting more patches. So that's gonna happen really soon. So but whether the patch is gonna be merged, though that's now within two to four years timeframe. So this is the last extension we have here. Yes, this is the last extension. So the last one is about VM Baloney. I think David might be interested in this part. So basically for multi-VM workload, so if I have a manual VMs, and we wanted to overcome it to the host, and we want to know which VM we want to take memory from, and which VM we want to give memory to. So this multi-generational RU gives a histogram, basically is what I showed here before. So the one on the right side. And based on this histogram, so we can decide, okay, so in this example, VM1 has more code memory. Again, the bluish colors mean code, the reddish colors mean hot. And VM2, it has more hot memory, so we don't want to take memory away from VM2. So that's another extension. Basically, this is similar to free page reporting and free page handing. And instead of reporting free pages, we're gonna report a working set. So this is working set reporting. And with this information, when we have multi-VMs, we can decide how to balance memory, how to share memory between them, among them. So yeah, I mean in general, like whenever we talk about working set size estimation, we are making guesstimates. And the real issue is if you take a look at the VM at a certain point in time or just at any process, you might think you have an idea what's happening, but like that could change any point in time. So it could be that that VM is idling for like 500 days and then you decide, oh yeah, like I'm gonna shrink that VM and just at that point in time, somebody starts up a huge application and essentially you trigger out of memory conditions. So that is actually like why I, I wouldn't say detest, but detest is the right word. I detest auto ballooning because like you think you know what you're doing in a hypervisor, but you actually have no clue what your guest is doing. And the nice thing, for example, about free page handing is that your virtual machine still has all of the memory available. And like if you run into that like scenario where some like the VM suddenly goes crazy on memory or the OS, it can still make use of that memory. Whereby if you like inflate the balloon, it takes usually some time for you to detect that you can deflate the balloon or if you want to do that out of random context, you're usually in trouble. So it's a nice idea for working set size estimation and it might, for example, help maybe to set like C groups in a certain way with swappiness or something like that. But like shrinking VMs in that way, I'm usually a little bit more pessimistic that it works reliably, but I think it will be a good tool. So I get what you're saying for working set size estimation, it will be a very good tool I think. Okay, thanks. So this is a agnostic tool, whatever technique you're gonna use to shrink VMs. So I just use ballooning as an example. So it could be a word PMM or word amount, anything that works for you. So the working set reporting are from guest. It's like the guest has to communicate this information through the word balloon device. So that needs a channel to communicate this information back to the host. That's the only requirement. Of course, it doesn't have to be a word balloon. Wouldn't it also work somehow that you would do it in a hypervisor and take a look at the physical pages and whole day age? That also works, but in the hypervisor, right? We don't really know the page types, right? We don't know, okay, because I'm sure you're gonna tell you the codes pages actually are from page cache. So this information is lost if we try to guess the working set after that VM. Yeah, right. You're right. My question would be if the guest operating system, for example, when you shrink the VM is able to rebalance them. Although you don't have all the information at hand, it might be good enough for certain working set size estimations where you simply care about what's the maximum size of my VM. It all gets more problematic with memory tiering. That's what I learned. Today, I learned everything gets more complicated with memory tiering. It's just an option, right? And if, to be honest with you, right now I don't know how well or how bad it's gonna work, so, but that's the direction we want to investigate. So that's why this right now is like extension three. It has the lowest priority and the first one of course has the highest priority. More questions? Yeah, so I do not have questions regarding those extensions or the implementation because I'm not sure there is much to discuss. There has been discussion on the mailing list. We as a group have shown some, let's say concerns. So I would like to focus on where we go from here. So you've got your code that it seems that long term, there is quite some nice potential for extending that implementation that is currently not really possible with our existing LRU implementation or at least that's my perception. On the other hand, our LRU implementation has been tweaked and proven by many years. So I do not think it's possible to simply replace one by another. Right, totally agree. Yeah, so right now you've got that opt-in kind of approach and I'm really wondering what also other people in the room feels. So if we go and get that merged because that's the only way how to find out how that implementation really works on the large scale deployments, right? So how should we go about that? Because one approach might be to simply merge it and have it opt-in for people just to enable it and try to play with that. Another option might be to simply merge it and enable it by default and let it go through fire. And I mean, expose that to users and tell them that okay, if that doesn't really work well then that should be really looked into and debugged and fixed probably or maybe just concluded that this kind of algorithm simply doesn't work well with that workload. And you are back to our original implementation. And I can see that both approaches have some advantages and disadvantages. And also maintaining two different implementations of LRU will be definitely a maintenance cost. So those are all things that we should really take or keep in mind and... Totally agree, yes. So is there something that we can agree on here? Yeah, I can see Mel has a hand raised. So do you want to say something before we... Oh God. We can hear you. Oh, okay, thanks for that. Mel, you have disappeared. Yes. You're back. Hello. Hey. I think that if this was merged it should be enabled by default as much places as possible. And a major limitation on that at the moment is Max SMP. It requires Max SMP to be disabled. Now that's enabled on at least open SUSE SLEE according to get kernel sources enabled on Fedora and RHEL. And maybe somebody in the room can confirm Debian. I think later Debian's Max SMP. So even though it was merged, even though it was default, yes. Most major distribution or at least some major distributions will not be able to even run it. And it will be important that limitation be moved. I'm guessing the Max SMP limitation is based on the number of bits consumed for node's shift. Right. And somehow I think I added that depending not on Max SMP a long time ago and after I got a report of build error and somehow I couldn't reproduce it anymore. So I'm gonna remove it probably. I have already removed it in my report. So I'm gonna post the next version. So that part will be gone. So I think hopefully, not gonna cause any build errors. And then if not, then I guess problem solved. If there's still a problem, then I do have plan to address this issue. Basically we have additional space. Okay, basically we can remove some page flags by, oh, who's talking? Yeah, I think I shared that plan with you. And I think we can remove page swap backed, right? Basically a non-page, page of non is always swap backed. And... Oh, they're not, cause you can em-advise freedom and then we clear swap back. Yeah, sorry, sorry. Then they go on the file, LRU. Basically shmem is always swap backed. A noun can be, the swap back can be removed, can be cleared if we want to, something called lazy free or em-advise free, yes, right? So that part. But we still can, let me think, I think I have a solution for that part, but I just couldn't remember it. Another possibility will be simply to drop maximum node shift if, if MGLRU is enabled, because the current value of Max SMP allows for 1,024 new nodes. And maybe the room can answer, does anyone know realistically of a machine that has 1,024 new nodes?  You could design it.  Okay, now remember how to remove page swap backed. Basically for a non-page marked as lazy free, we can use an additional bit in page mapping. Right, this is a null and it's marked as lazy free. We use another bit, because we have spare bits in page mapping. So we can move there, so we can remove page swap backed. And I think we ought to use three right now. We are using two bits because for 32 bits you can only use like the last two bits and to get another bit only works on 64 bits as far as I know due to the alignment of the map. Are we talking about page mapping? I don't think that's true, David, because we K-Maloc all the things that we point to with page mapping, right? And the minimum K-Maloc alignment is 8 bytes, even on 32 bits, right? I think a better bet is just going to be to wait for separately allocated folios. Page bits are true. We've seen this. I love your optimism. There are some page flags we can get rid of. I've been looking and thinking hard. One is page private. The file systems can simply say is the private field null. I need a bit of cooperation from some file system maintainers, but I think people can understand this is for the good of all of us in page flags, that would be a good thing. Yeah, we've got a little off into the weeds here. The context of the discussions in GLRU rather than saving page bits in general as a problem and we could get stuck into that for the next like hour. I just think that the MaxSMP limitation right now is a strong limiter because of major distributions cannot enable this. And I know there's other big distributions out there, but anyone has MaxSMP set at the moment can't use MGLRU, and that's going to be a bit of a maintenance headache. And if that means that the nodes shift needs to drop to make space, then it will be it. But it should be at least pre-requisites because at least my own preliminary evaluation of this shows the performance of it is not bad, but it is better on UMA machines than it is on UMA machines. So there's likely to be some fallout from this. And if we go through a couple of years of development and nodes actually running the thing, significant effort will be put into maintaining two separate implementations only to find out that when someone tries to actually use it, it has to be thrown out again. I agree with all that, Mel. That's a large part of my thinking. I mean, if we can look forward in the future, if this thing is going to be a success, it's going to follow a well-known path. We'll put it in. We can enable it at conflict time or at run time. And nobody will use it. And then various engineers and various organizations will turn it on. Let's give this a whiz with our usual workloads. Hey, this says promised. And they'll start allocating resources to it. It'll get better and better and better and eventually people will start switching to it. And I'll come back to that later. But what makes that process so much harder as a commoner is to get those people up to speed or what makes it so much harder is the combination of the code itself and its development history. I don't know who wrote it. I don't know who to contact. We don't have access to all that institutional knowledge if it's been years of development.  Combine that with the fact the code base itself is inscrutable. I tried to read it and all I saw was a whole bunch of C statements. That does not tell the whole story. So I implore you to put at least two person weeks into making. And when you document this code, don't look at it from your point of view.  Now, I share this concern with Mel that will reach the point where it's wonderful for most workloads, but there's some things the legacy LE is still better. We've still got slab and slab. We're supposed to delete one of those 10 years ago, but still one has advantages over the other so we've never been able to hit the skills switch. So I think we should have an objective deleting the old one, which means making MGLE a superior in all respects. I understand it hasn't seen a lot of use on big iron. I don't think the prod kernel people are really using it in any angle yet. So if Google could do that, that would make things more confident. But also I'm being a bit hypocritical here. We don't have this problem with file systems. We encourage people to choose whatever file system serves their purpose as the best, and we're proud of it. But for some reason we have the opposite problem in CoreMM. Why don't we have 15 LEUs, choose which other ones are best for you. Weaness has declared that we're never going to have a pluggable CPU scheduler. You could say the same thing of file systems, but we don't. I think unless people sat fire to me, I could see as merging this in the next RC cycle with the big warning button on it will give people time to play with it. But it's that issue of how we help engineers ramp up. We're taking a group of people who have been working on existing stuff for decades essentially turning into new hires. And throwing them a new code base, which doesn't have code comments without the benefit of the guy in the next cubicle who's been working on it for a long time. This is the problem. Right. I agree with most of your points. So, okay, let me start from my point of view. So my first problem, which is a chicken egg problem, so this is regarding how we... I do want to find more people to use it. At least I started internally at Google. So I went to... Okay, you're not running through it. I've got to talk to you. So I went to the Android team. Okay. I went to the Android team. I asked the Android team, could you try this? And collect some data and then we can show the appdream that this is something promising and we can keep the ball rolling. Right. And I'll let Surin answer how many times he asked me, when will this be in the appdream? So they won't try it until it's in the appdream. And from the appdream point of view, why would I merge something that nobody actually has used? If it's not proven, not should be in the appdream, right? This is one thing. So I also talked to the product kernel team. I think Michelle was there. So he also could tell you how many times I asked Google data center team to take this and try this and then give me some feedback. So I think their initial response was, okay, this is never going to be in the appdream. So we're not going to try it. We just rolled it off. So that's the problem I have too. It's the appdream first. Everything wants to be in the appdream, then we'll take it. Right. You have a very good point. I got an answer to that. So then I thought, okay, what am I going to do? I kind of just like to die. So what I did is, I talked to my management. I said, okay, let's allocate some fund to hire a third-party company, a third-party independent lab, to verify this. And they can post data to show its benefits. So that's where the data performance numbers actually came from. So they're not from Google, unfortunately, right? But they are independent. So that's the... Okay, go ahead. Yeah, so I think that while I do agree that hearing about the history behind that is really an important part, but I guess we will not get that full story. And I can live with that. So I guess the primary question is that if we get that merged and it seems that nobody is objecting to having that enabled by default, so essentially declared the next release as a reclaim fire. And you might see quite a lot of bug reports. And you can not really expect that the existing reclaim community called both of them as a community. So that would be a lot of... potentially a lot of work on your end. And are you prepared for that? Are you prepared that if we see a lot of bug reports and they are not getting addressed because you are overloaded or there's not enough manpower to handle that so that the whole thing gets reverted and you get another chance probably. So that's probably a very important question from me. I'm not prepared for that. That's definitely no. So that's why I added a kill switch. That's why there is one time switch to turn now and off. No, I'm not saying that you really have to fix all of them in a week time. I'm saying that if there are bug reports they really they will make you busy for a long time. Are you able to or are you willing to devote that time on that because if the answer is no then I do not see how we can get that much. There are tricks we can play. I can enable it by default and Linux next for one day and then disable it the next day and then not read my email for three days. I don't think you are going to get a reasonable matrix LRU problems in one day. So Malk, could you repeat that because you were probably lost in the noise? You're not going to get reasonable metrics on LRU efficiency in one day of enabling unless it's an absolute object failure but I ran us through five separate machines with a variety of workloads that it didn't crash so I don't think it's going to be an outright functional failure. The key for any LRU is kind of preserve hot day short loss which is much more subtle and takes a longer amount of time to detect if it is an issue. But for me any merging of this that is not enabled by default by most major distributions due to MaxLZ is a hard stop because it's going to take years to rattle out and if the primary author is not available to deal with any issues to come up that's a bit of an issue. So I think the question all comes down to whether Google is going to continue the investment in this area. So the answer definitely yes because I haven't finished my story and now after Andrew has taken the patch set then the Android team said yes we're going to use it and the product current team the data center team at Google said yes we are all in. So I think I'm going to go back to the healthcare and the budget plan for the next many years. So back to your question let me finish this so back to Michael's question would somebody at Google be prepared to maintain this for a long term? Yes. But would that be the model of the community mode? So my role is to start it and then show the benefits to everybody and I try if you are not convinced I can try again, try again, try again until you are convinced. So you think this is something worth trying so you're going to try it and then going to move to the next company or next person to do this. So my next step actually is Mamakashadid doesn't have a backing company so then the next company Postgres which is backed by EDB MariaDB and MyCycle there are two different companies and those companies and also DataBreak the owns Apache Spark to work with them so in their menus I'm going to ask them to add something like as shown promising results when running their applications I just suggest if you have a newer kernel you should turn this on. So that's my next step. So also I have been working with many companies in private so actually I have reached almost of all of you guys I think David Rentes have sent you guys emails like a couple of years ago to invite you guys to join the conference with us so I'm going to continue to push on that front so after we have built enough momentum so then probably I could just sit back and take a break the rest of you guys could see because I think Andrew mentioned oh okay you just put all of us out of job, no so I know you have been here for a long time right so generally I have been working in this industry for a long time as well so I'm not thinking like next three months next three years now I'm thinking about the next five years or the next decade You didn't put it out of a job Of course I'm still You gave them all new jobs thank you very much I want to disagree with you Mel I think putting it in default off that has considerable value it certainly sounds like it's going to make it much easier for Google to put resources behind it it makes it much easier for other organizations to play with it and decide if they wish to ramp additional resources into it if they seek promise There's basically no good choices there If it's not enabled by default particularly early in its lifetime when it has been merged the vast majority of people are not going to end up running it because at the end of the day evaluating LRU is difficult because it's primary job is to identify the hard-working set A three year cut over would be a success I mean better if it's better if it's when that went in it was a joke six months after better if it's went in it would get an eno mem corner and collapse in the heap but people worked on it got better and better engineers ramped up with it and now it's big time People would notice that the integrity issues far faster than those page agent version issues are something similar are identifying changes in phase behavior typically for any of the LRU type bugs that we have dealt with in the past the vast majority of them have been desktop and interactivity related where the system is getting into a swap storm like case swap D being pegged as 100% CPU or the desktop is jittering our video playback stops working when I am doing a kernel compile in the background or something similar to this and for that it would have to be enabled for interactive users early on and pager claim on the enterprise side it's not that big of an issue but until it is absolutely an issue with the run time that you get a corner case but for normal desktop users major problems with LRU bugs tend to show up very quickly so I would push heavily on the enabled by default in particular removing the max s&p limitation so that Sli, Open2Z, Fedora, REL and at least Debian enabled or at least play with it first or at least play with it insofar as to complain about it and they get overwhelmed by bugs and disable it by default which is useful in itself but if you want to see a case where 5 years of development is going to MGLRU and standard turns out no one's enabled it because because they can't because of max s&p or some weird corner names don't get me wrong I'm not opposed to this being merged I just think that it should be enabled by default as quickly as possible because THP was enabled by default at the very beginning and it set everything on fire and it took about 3 years to actually sort it out and if it wasn't enabled by default I don't think it would ever have started it out so I'm not sure if I understand correctly so what's the benefits of enabling this by default as soon as possible instead of working steady pace because it becomes a Heisenberg issue you don't observe you don't observe a problem until you measure it if it's disabled by default it's not measured so okay I'll give you example this is how I usually think so at Google when we draw out a new feature what we do is like we have a million of users or even tens of million of users right so what we do is after we add something with really new binary but this feature start initially turn off and then we turn down on 1% of machines 5% then 10% if everything goes well after we're going to reach 100% within a year or so and if something goes wrong then we just roll back and back to the beginning and fix it and try this process again so that's the way I am used to in terms of thinking process so I think personally I would prefer MJRU follows this process so by working with those third party companies user space application providers we just try this with all major workloads we know which workloads actually consume high amount of memory then we start with the list one by one then we tackle the problem that's how I at least at the moment see the best way to move forward I completely agree I completely agree this is the way to bring it up in a fleet like when you're a company that has data centers and warehouses distributed across massive geographical locations and apply for Google and apply for companies like META both it doesn't help any of the major distributions which are responsible for shipping a general OS for when and how to do switchover if there isn't a large amount of backing data but just because it works for a fleet of machines and warehouses does not necessarily mean it works in a general case if you reduce number of generations to how much is the difference between MJRU and the legacy or existing JRU LRU sorry so by design we can't just reduce the number of generations to two it has to use four because it distributes pages across all four generations so we can extend it beyond four generations so by the way we can't reduce it anymore so right now it's hard coded at four so go ahead just on the enablement so what was interesting I think on the mailing list is that there were actually quite a few people who said if this is going to be available in the kernel I'm going to turn it on I think one of them was the Arch Linux kernel maintainer so I think I disagree a little bit on the if we don't enable it right now nobody will use it I think there are different distributions some of them are not as eager to try new stuff than others I think there will be some like I think if we merged it default no and we have it like this for two or three releases I think people will use it and we'll experiment with it and you know it's not a guarantee but you might be able to space it out a little bit so you don't have flack day and then everything's on fire you might get some early reports I think I don't think that's entirely unlikely I just want to agree with your harness and to disagree with Mel about THP being enabled by default being the right thing to do documentation lives forever it turns out and you can still find documentation published by a prominent database vendor who I shall not name but I've been fighting very hard internally to get them to stop doing that that says you must turn off THP because it absolutely creates a database performance yes it did ten years ago now it doesn't we fixed it delete this documentation and finding the documentation owner and getting it changed is hard it turns out and yes it doesn't die off the web and it doesn't die off forums and you find sysadmin is helping each other by telling them these things and it's like yeah that was true when you learned it have you benchmarked it recently do you have any idea it's true it's not true so yeah merge it by default off by default until we've got the bugs out of it and then enable it even if it was the cave on that particular one it would still have to be even if it's disabled by default it can be online that should still be available so I think this all comes down to benefit risk you know analysis or risk benefit analysis so personally I don't really mind turning on by default but then it would become others problem because you know if we turn on by default and we break something right and okay I break something okay so the other person who users they suffer so personally I don't want that to happen so I do hope one day we can switch to MjRU by default but I think that might not it could happen probably sometime next year but I think we might not want to turn on immediately for everybody that sounds kind of risky to me yep yes right so I think if we merge it by default it's a very tangible time frame for enabling it like I wouldn't say like in a couple years we'll switch it to default on I think it should be a couple kernel versions at max because you'll get a lot of early adopters and those tend to be you have your use cases that you care more about than others those will be people that run laptops and desktops at home and you're going to be inundated with bugs that you might not necessarily be excited about right it's like I turn swap in as to zero wise it's swapping that kind of stuff I think you can take the heat off that a little bit and deal with those up front and space it out a little bit but yeah if there's not a concrete plan to enable it in a reasonable time frame I think that it's not going to work all right I'm calling time guys because we got to wrap it up great thank you


Right here at the University of California at Berkeley. Yeah, I believe that in the year 2016 Public colleges and universities should be tuition free and we should lower student debt, but all over the country Including the University of Vermont schools scrambling and they're figuring out ways to bring in revenue I look at it from a different point of view and that's what this campaign is about is looking at things from a different approach And I understand that the chance Lee has a problem But the way I look at it is different the way I look at it is to say that we have the richest country in the history of the world we have seen a Massive expanse in income and wealth inequality We have seen a rapid rise in millionaires and billionaires We have seen a situation with large multinational Corporations in a given year paid not a nickel in federal taxes because they slashed their money in the Cayman Islands and What I believe and again, this is an idea that the vast majority of the American people agree with Nothing radical about it. We live in a competitive global economy We will not succeed unless we have the best educated workforce in the world So our job is to encourage not only young people but workers to get the education that they need And the way you do that is by having tuition free public colleges and universities And that is an idea that is supported by people all across the spectrum will understand how important Education is to our country and we pay for that We pay for it through a tax on Wall Street speculation That's what we do, you know what the conventional wisdom is about is Wall Street's greed and illegal behavior destroyed the economy Of course, we're gonna bail them out. Why would we not bail them out? But young people who desperately need a good education, of course, they should leave school 50 or $70,000 in debt Why would we help them? They're not wealthy campaign contributors. That's the kind of thinking we have got to break through All right, the needs of young people in this country in the future of our economy is as important as Wall Street


Hey everyone it's Gavra with Oxmar Auto Group here today at Oxmar Toyota for our Facebook use vehicles of the week. Now this week we have three vehicles to share with you guys. Bear with us as it is raining out here but we still wanted to show you these vehicles. So let's go over some information on this one. This is a certified pre-owned 2016 Toyota Corolla, it's an LE. Exterior color is a Barcelona red metallic. Now this vehicle did just come off lease, it has bluetooth, does have a clean car fax, one owner. Interior is a gray, mileage is 6,203, price is 14,900. Our second vehicle is a certified pre-owned 2015 Toyota RAV4 LE. Exterior color is a classic silver metallic. This vehicle had one owner, clean car fax, was locally owned. There is bluetooth back at camera and also has a roof rack. Interiors are dark gray, mileage is 40,150, price is 17,576. For our last vehicle this is a certified pre-owned 2015 Toyota Camry LE. Exterior color is a creme brulee mica. The vehicle had one owner, clean car fax, does have bluetooth and a back at camera. Interior is a tan, mileage is 47,273, price is 15,700. If you guys have any questions, please feel free to let us know. Best photo is<PHONE_NUMBER>. You can also visit our website oxmortoyota.com. Thanks you guys, see y'all soon, bye!


Hello and welcome to the CMC markets Monday market webinar with myself David Madden market analyst here at CMC markets Today's date is Monday the 19th of February and the time has just gone 12 15 GMT quarter past 12 UK time And this is our Monday market webinar and as always with the webinars We will quickly go through the risk-borne slides. First of all I'll leave this up on the screen there for you guys to read It's very straightforward. It essentially states anything that is covered in today's webinar is just purely a My own thoughts on my own comments. This should not be Be construed as explicit trading advice. This is this is lead us on the screen here for you guys to have a quick read over It's all fairly straightforward. And if you're a regular to our webinars other videos that we do You will be familiar with the practice of the Risk warning slides. So let's move on to the next slide While you're reading over that a little quick rundown of what's been going on in the financial markets since the closing play On Friday and the short answer to that is not a whole lot We had a good session in in the positive session finish in New York on Friday We also had a positive session in Japan overnight But we are the Chinese market remains closed at its spring festival the in China Speaking of closed markets today in the New York soccer change will be closed as it is president's day in the United States of America And the Canadian market will also be closed as it is family day in Canada. And for that reason The fact that we have, you know, a few major markets out of commission that are on holidays Traders are away is we haven't seen no volatility and no trading volumes in London And it's likely to be the case around the globe today So today's session may not be the most interesting That is maybe kind of a quick look ahead to what's going on in the next few trading sessions I'll also keep an eye off a certain private edge of price movements That that could be on the horizon in the next few days So for those of you who are familiar with our trading platform What I'm going to do now is do a quick rundown of the major economic events of the week So look on the trading platform look at the market pulse fourth option down market calendar It gives you a breakdown of the important economic indicators that are that are that is due out during the week So turn your attention to tomorrow morning tomorrow The big one to watch out for tomorrow is going to be the German zoo German zew business confidence report coming out at 10 a.m. Tomorrow morning And then later on at 3 p.m. We have the eurozone consumer confidence figure coming out Turning our attention to what's going on on Wednesday We today Wednesday is going to be the day for all the PMI reports the manufacturing pyramid manufacturing and service PMI reports coming off from France At 8 a.m. In the morning Germany at half past eight at the eurozone as a whole at nine o'clock Later on and what was the morning we have UK unemployment and also probably more important nowadays It's probably that shoot the wage growth figures Added to that we also have public sector net borrowing unemployment in the united kingdom is at a the lowest in Over four decades So I think like with the United States the UK like the United States On the the headline unemployment figure is very impressive NSF multi decade lows But the area when you hear about individuals being in these the squeezed middle is exactly Exactly what we're looking at here on the wage the wage growth Headline unemployment is something politicians love to talk about But if wages aren't going up as well at the same rate at which jobs are being created People people who are working Tend to get a squeeze especially inflation in the UK health study at 3% So if your wages are unchanged by the cost of living is going up your real income is declining And that is one of the one of the kind of big issues the politicians the face After face and also we it was the very Impressive wage growth data that we saw in the recent non-farm payrolls from the United States Which got everyone's thinking about potentially for ray hikes from the Fed this year To keep an eye out on the wage-worth figures from the UK on Wednesday morning past nine Also looking here to to Wednesday existing home sales from the United States And then we also on top of that got a Canadian budget figures coming out later on in the session Speaking of our home sales the homes the The recent housing data that we saw from the United States was also was very impressive only on Friday So keep an eye out for the to the existing home sales that's coming out on Wednesday Turning our attention out to your Thursday morning. We have the CPI numbers coming out of France at 745 We have the IFO business conference service coming out in Germany at 9 o'clock in the morning Half nine big big one to watch out for of course, but of course be UK GDP And we also have CPI numbers coming out from Italy And this is all going to feed into the overall eurozone CPI which is you out on Friday also keep an eye out on on on Thursday for Canadian retail sales that's coming coming out at half one and then On Wednesday as well. Sorry Thursday. We do have the initial job as claimed as we do every Thursday and half past half past one o'clock in the day and then because it's because the Today is president's day and today is our today is a closed day for trading in the United States The oil imagery figures which usually come out on a Wednesday at half past three are going to be out at four o'clock on Thursday to keep an eye out for that looking at Friday by the morning German GDP first thing up as out as out early doors On seven o'clock in the morning scrolling down throughout the day at 10 o'clock we have eurozone CPI as I mentioned some of the big major major Countries within the eurozone had the CPI figures coming out on On on Thursday morning And we're looking at the region as a whole and then of course what we have here is back of Canada cord inflation We have the inflation figures coming out from Canada at half past one in the day And that's going to largely it for the week ahead of us Some of the major topics to look at all that happened in the last few days in the last 48 hours So record bank hyzer had a had an okay update Total sales rose but rose by two percent and it's respecting about two percent two point one percent But when you strip out their strip out one of the recent acquisitions year on year the number of actual Sales didn't like it was actually flat on the year. So it wasn't as impressive as initially thought That being said the share price has been A downward trend for last for the last couple of years and today's update didn't really do much to actually kind of turn around in lesser confidence Well, that says on the go Excuse me Right move have stated that average house prices in the uk grew by 0.8 percent That's an improvement on the previous reading Of 0.7 percent but bearing in mind over the last 10 years average house prices Had been grown by 1.6 percent. So the rate is very much sub par sub average Uh, it's and also in that update right move stated that the london property boom has come to an end And I say that investors sorry off people who were selling property in london Should lower their expectations and also a translation lower their offering price because the market isn't as strong as it once was So what we've seen is we've seen you know stocks like persimmon Berkeley group Berkeley group rather who are running much london focus their share prices in the red today And also other companies like belway and persimmon homes as well Like I said on that it's been a relatively quiet day in terms of actual corporate news flows and because because china was closed and The u.s. And candidate will be closed I suspect it's going to be a fairly fairly quiet day on the markets I'll take a look now at some of the major indices and see how they're getting on price action wise I was looking over the the the charts before I before we began the webinar and It's fairly it's basically a very similar theme We've obviously had this massive sell-off a few weeks ago And then we've been kind of clawing back some of the ground sales and it would appear that we are getting more That we are heading in the right direction and we are correcting the major set up that we did have and sometimes it's often said of Financial markets and particularly of technical analysis to study of charts They can be a set of any prophecy and I think when it comes to market corrections That is an area that that I'll be in agreement with in agreement with in that whenever a market bounce is back The more it can continue to correct itself And recoup some of the losses the more likelihood that could continue because the feel good factor is there If you've traded or buying into it those those who are kind of playing the wait and see are waiting on the fence Then they they they see the upper price move into the sign that you know what there is confidence out there People obviously are clearly riskier at the lie if they're going in now but if if If the market keeps on going up there's a feel that I may miss the boat in terms of getting it at a relatively cheap price So the chart here I'm looking at is at the foot 200 and to be honest It's fairly similar across the board of all the major indices So as we can see here when we had a major the major decline here that began late January into early February as the market was coming off here Looking down here at the MACD indicator and the MACD histogram. We saw a steady rise in negative momentum So as the market was pushing lower, we saw a full-on increase in negative momentum So the the the MACD indicator confirmed That the momentum was to the downside And as you can see here now, the market is slowly but surely correcting itself and within that what we can see here is negative momentum is solidly and And Consistently declining. So the selling pressure is in decline the market's moving higher as you can see here We reach a level today that we haven't seen since uh, well Well actually for basically two weeks. So it's essentially a two week high today Which is very common on some of the other indices as well Rather two week high We're creating higher highs along here granted If we still haven't pulled that regrouped all of the losses But nonetheless, we are heading in the right direction if you do continue to move on from here An extent of the watch out for potentially could be seven thousand four hundred It's big cycle on to the number And notice how actually it's going to both support here and resistance in on this price And then north of that the next big level to keep an eye out for could be the tourney moving average Which comes to play in around seven thousand four hundred and fifty five or so The dirty moving average is is widely overseen as a kind of a kind of a parameter If a market is has a positive outlook or a negative outlook Obviously south of it. It is quite is negative positive is is is Is uh, not north of it is positive But you know as you said here depends on which if you do want to buy this in the markets Do you want to wait until the market turns because it goes above the 50 moving above the turn to moving average And then look to potentially get into it or do we want to take on some more risk potentially buy into it now As i was saying the more market more market moves higher It's almost like the more likely it's it's going to be higher. It's going to push higher It's going to continue moving higher because those investors who are keeping an eye on the other place around now They may may feel that the market is is correcting itself And push on higher from there, but depends on what your risk you potentially want to take on But also bearing in mind give that that the levels that we've come from the market could also We've only we've only pulled back about a third or less than half of the of the ground we'd laughed We've been blasted so the market could easily run out of steam and turn over on itself I'm like to have a new have a new leg lower So areas that we could potentially we could we could look to move move back towards We could potentially move back back back down towards 7,200 or perhaps even down towards 7,100 itself And obviously the big one to keep an eye for the downside will of course be 6,919 Which is which is a low from a from where? From wednesday, so from tuesday the 6th of february I'll turn attention now over to what's going on in the DAX It's a fair like I said, it's it's a fairly similar situation with the DAX So we've had the major sell-off here once again We saw a steady rise in negative momentum the the market's pushing higher here a series of higher highs and higher lows Classic sign of an upward trend are you also in a decline in negative momentum on the MACD indicator on the MACD histogram Areas to keep an eye on forward to the upside like I said It looks very similar to to the chip of the fuzzy chart and it is this area here In around 12,741 as you can see it actually This this price here actually does near near near enough support on a couple of occasions and resistance on one of the occasions It also coincides with the trading moving average So this could be a level to watch out for if you break north of the trading moving average here The next level to keep an eye on forward to the upside could be this price here Although just just just north of 13,000 notice how the two Three moving averages are actually are kind of coinciding over over around this area here in itself bearing in mind that If you look at the fifthly moving average the fifthly moving average act as support here I'm here on a couple of occasions in January and the third and one of the moving average managed to It traded itself of the one of the moving average here, but it didn't it didn't close below So these are areas that are pre is this this this price action here the fifthly moving average Those are previous history of acting as support. So therefore could act as as a resistance in the future I know a break north of that could look at could look at taking us back up towards 13,300 And if you go back beyond beyond that, then we could be looking at heading up towards 13,600 700 800 so on and so forth If the market if the market does manage to turn over on itself from here We could be looking heading back down towards the 12,000 and 90 a region or perhaps even down towards 11,900 Or maybe it is another major sell-off down towards 11,692 The u.s. Markets are in better shape than those in europe Take a look here at the Dow Jones as you can see here. It's it's a very similar story all over, isn't it? It's you know rapid sell-off here a lot of ground was lost But notice here how the thought the Dow Jones traded below its two-day moving average But on both occasions manage to kind of Bounce off of this Granted this is a good lesson in if you're looking at putting stop losses or entry prices or limits limit bias into the market It's a good example of If you're if you're looking at entering a market or exiting a market You don't want to be too wedded to a certain A precise price just because you may have had your stop loss Sitting at Above the turn of the moving average or on the turn of the moving average and then of course what do you know of the market? Trades through it and then bounce back up again and then same again here So it isn't always the case that I'll actually perfectly stop at a certain price We could see a scenario where a trade just slightly through it Or or perhaps even stop short of it. So just something to keep in mind But as we can see here the turn of the moving average there they're about acting as as a support for the Dow Jones The market's pushing higher here. We're seeing a Trend of higher highs a steady decline in negative momentum The market continues to push higher here. We've even actually closed above Holding above the 50 moving average which gives you an indication of how polished market is So if you continue to move on north of here, oh, sorry, I apologize. I kept saying the Dow Jones This of course is the s&p 500. I do apologize about that Other pushing higher here on the s&p 500 An exit area to keep an eye on forward to the upside could be this this price here of 2796 notice how active as a Resistance to the upside and support on the downside on this particular occasion here So it's an area which may act which may be an active resistance should you press on higher from here North of that 2800 would be the next big level to keep an eye out on and if you take out 2800, you know There's quite a good chance. We could look to get a tested a test at the the all-time eyes a few thousand 877 And then beyond that the next big psychological number that I go for will of course be 2900 Move to the downside We may find some support coming to play in around the fifth day moving average Which comes into play in around 2727 Notice how once again once we kind of got above the truly moving average on friday in that issue Just ever so slightly straight slightly below but by and large it acted as support Move to the downside once again. We may find some support coming into play in around the 200d 100 day moving average 2655 or maybe even down as low as 50 The areas to keep an eye out for and then obviously if you do have another major sell-off this price here South of the journey during the moving average this price here at 2532 That would be the big one to keep an eye out for seeing as there was a recent low in from february And look now at the dow Jones and it's going to be fairly similar situation on the at the dow Jones in terms of the In terms of price action. So we've had the we had the major sell-off Had the sell-off I saw a steady increase in negative momentum Now it's in the market push higher and recoup recoup some of the ground What we're seeing on the down on the chart here is a steady decline in negative momentum So the the the selling pressure the pressure from the bear is is in reverse is declining And all the while the mark is pushing higher and once again, it's pushed north of the 50 day moving average on friday and now we're actually sitting above the 50 moving average So if you continue to push higher here on the dow Jones, we could be looking at running into resistance potentially at this price action here of 2000 sorry 25,588 and then north of that up towards potentially heading towards 26,000 if you go beyond 26,000 there's a fairly good chance. We could be looking at testing the the old-time eyes of 26,706 and then of course beyond that, you know, tears looking for big psychological numbers like 27,800 900 and so on I think if you do manage to turn over on itself again If you do manage to turn over itself on the on the dow Jones, we could be looking at getting support from the from the 50 moving average in around 25,200 or perhaps this price action here of 25,106 And then if you move south of that again, we could be looking head and back down towards the 100 day moving average at 24,300 And it's only if you do have a major sell-off that can be looking at the testing the February low of 23,138 So all the while all the while the the indices are pushing higher We have seen a bit of a negative move on gold in the last couple of sessions As you can see here gold has been broadly trending Broadly pushing higher over the last year So it's been actually some quite choppy moves of buying large what you've seen is a series of higher highs and higher lows Obviously this this price action here be the notable exception But if you look at the price action since december over the last two months goes But it's very solid up for trend fast example of higher highs and higher lows Granted we have seen a bit of selling in the last couple of days But but if you do manage to get a drift lower from here It could be looking head back down towards 1340 or then south of that you could be looking head in the back down towards 1320 Uh this this price here and then if you move south of 1320 The next area to keep an eye for will be the kind of 1307 1306 area and then of course 1300 the big psychological number But as it was saying the trend for the last couple of months has been to the upside So if we do manage to push higher from here It could be looking at testing january's high of 1366 And if we go beyond 1366 you could be looking at testing 1375 and we haven't seen 1375 on gold Since the summer of 2016 it was uh, it was july of 2016 That was the last time we saw 1375 there. There are the price price points to keep an eye for on gold Usually gold Has the flight to quality effect of the quality impact and what that means is that Whatever there's uncertainty in global stock markets, we see gold do quite well But on the week here on early february when global stock markets sort of immense pressure and we're During severe sell-offs What we saw the price of gold and actually fell It fell because the value of the u.s. Dollar rose and the u.s. Dollar rose as I mentioned about those good wage data figures coming up That came off in the u.s. A few fridays ago Showed us that wage growth in the u.s. Is picking up and that got traders thinking about are we going to have i Are we going to have tighter monetary policy from the federal reserve and are we are we going to have it at a quicker rate? so early 2018 traders were thinking about possibly three rate hikes from the federal reserve On the back of those which on the back of the most recent wage growth data from the u.s We're now potentially looking at about possibly four rate hikes And that's why gold as it hasn't actually done as well as you would think it would so I would say nowadays recently Gold as the in gross relationship with the u.s. With the u.s. Dollar, which is traditionally had But if you're looking at trading gold, I'll keep an eye out what's going on on the u.s. Dollar and actually Speaking of them commodities and u.s. Dollar products would continue things going with the commodity theme and have a look at what's going on on the price of Brent crude oil So break crude oil since june last year was in a solid upper trend Classes apple of higher highs and higher lows in a solid upper trend This was largely built on the expectation that the that opec Would have a continued their production freeze throughout 2018, which of course they did Then there's already talking early january that that Saudi Arabia would look at would look at extending the production freeze beyond 2018 That's in the price of oil here to a fresh three-year high But since then we've had a bit of profit-taking and I've only had a bit of profit-taking We've we've had increase. We've had high stockpile levels in the United States and also we've had high Evils of output in the United States opec effectively Want obviously it's in their interest the price of oil to be driven higher That's why they had a production cut and that's why they extended that the timeline of the production brought on the production cut But guess what when you cut all production You drive the price up and you drive the price up you entice others and encourage others to actually start producing So the shared producers in the United States saw the relatively high price of oil as a as a As a trigger for producing more oil which they have done United States is now producing a over 10 million barrels of oil per day a record about the United States We also have heard from countries like Iran that are looking at wrapping up their production as well over the next two years so So this point here when opec drove the price of oil higher with the production freeze has not been met with increased supply and that of course is probably to do Some profit-taking so what I can say is that the big picture is still looking quite positive Notice how this high that the low here if this is to be the low That hasn't actually taken out this low here. So we're still in the upper trend It's been it's been an upper trend for six months. So we had we were used to some choppy pullbacks on the price of oil So This has happened to be one of the bigger ones Once again as the price was declining it saw a steady increase in negative momentum Noticing the price bounce back and we're seeing a steady decline in A steady decline in negative momentum. So we could be looking at a bouncing back from this move here. So I know to keep an eye out for to the upside Could it could potentially be the fifth of the moving average which comes into play basically out of about $67 a barrel on Brent notice how it managed to act as breathing nearly a bit It's sort in a way of actually a support on that particular occasion there and also act as a support and resistance back in july of last year If you manage to take out $76 a barrel That's that big big kind of psychological number to keep an eye out for will of course be 70 bucks per barrel And then if we go beyond that we'll be looking at targeting the recent Three-year high of 71 spot 38 and then if we go beyond that we could we'd be looking at fresh multi-year highs And we could be looking ahead into the resistance up towards 72 74 If you do manage to turn lower on the price of oil again We could find some support from the recent low here this this this particular candle here at last thursday's low of $63 and 32 cents and then if you go below that you can get support in around the 62 dollar mark area Notice how you can have some decent history of the kind of 62 dollar area acting as support It's going to be a fairly similar chart as well looking at wji So what i'm going to do now is i'm going to move on to wji And then after that i'll do a few currency pairs after any markets You guys want me to have a look at feel free to type in the chat box and i will cover those markets So as i was saying it's a very similar situation in terms of the price action on wji After reaching a three-year high the markets come off and and it's currently bouncing back Where once again we are above the fifth day moving average on a price of wji So if we hold north with 50 moving average, we could see this positive move continue A push higher and from here could bring us up to 65 dollars a barrel And then if you go north of that it could be letting you heading up towards 66 dollars and 73 cents And then of course beyond that we'd be looking towards 67 dollars and 68 dollars a barrel Move to the downside should we actually fall back below the 50 moving average We could we could find some support from thursday's low at 61 sorry 59 dollars and 73 cents And if you go below that this level here of 58 dollars and 10 cents will be the next big level to keep the barrel for If we do break that level there that that that would be quite significant And we could be looking ahead and back towards the december low of 55 dollars and 72 cents I should take a look now what's going on on the euro versus the us dollar So broad the big picture is that the euro dollar has been in a solid upward trend Bessie's over the last year or so euro has been Really been being pushing higher versus the the us dollar and in particular since november we had to cover quite a poor september true True late october, but but this is since november The the single currency has been kind of gaining ground versus the us dollar and in fact we actually hit a hit a new multi-year high here on february A new three-year high On Friday it just gone so so automatically they kind of tell you How kind of positive things are for it made a three-year high only a few days ago So if you could think to move on from here, uh, we could be like I'm retaking at 125 hit them towards 127 128 They're there is to keep an eye on forward to the upside on the price of on the euro dollar Any moves to the downside on the single currency versus the greenback could find some support in around the 123 30 area or perhaps even low down as low as one 122 itself Starting has also had a decent run versus the us dollar In the past a few in the past few months Since last may since last march rather if you draw a low between the lows of march and the lows of august You can see here that this this this trend line has been broadly been respected over the last number of the last say 10 months Granted on the number of occasions There were a few occasions with the market just trans you just dip below that trend line, but broadly speaking held up This is another good example of don't be too precise Which your stop losses or your limits to enter it your limits to enter a trade Seeing as the market has necessarily always, you know Stop at a precisely bang on where you wanted to on this at a particular trend line that that you may draw or the particular consolidation area or a particular moving average Markets don't always kind of fully Stop where you think they might stop so you guys have gave yourself a better leeway, but nonetheless While the pound versus us dollar is north of this this upper trend this trend line The outlook is likely to remain positive as you can see here Starting has been gaining ground versus the green back in the last few sessions It's been a steady decline in negative momentum So the sellers are running out of steam running out of pressure and if you manage to push higher from here We could be looking heading a backup towards 143 144 145 and if these are all levels That that would that that would have been seen since the night of the idea referendum when basically sturdy went from about just north of say 150 right down to 135 In a matter of hours Move to the downside in the pentathlon versus the US dollar may find support in round the in the kind of 140 area Which are pretty much sitting on now And inside of that perhaps down towards 138 139 or then below that at 137 64 Right i'm going to wrap things up now and in a in a few minutes time We are looking we do euro euro starting and then we'll do down at the end and then after that we look to We look to wrap things up But there are any kind of questions or comments that you do have feel free to feel free to sit to type in the box But they're the ones i've been looking at next and moving on So probably speaking since last august Starting has been losing ground versus the british pound It's in the especially the last few months the last few months It's definitely much range bound has been too exciting to be perfectly honest The decent support coming into play in around the zero spot 86 89 area these two these two levels here and to the upside Accounts seem to break north of zero spot 89 29 For the time being we're kind of at the higher end of that range As you can see here the market as since they january has been pushing higher So we could be looking at retesting the the 2018 high of zero spot 89 29 And if you go beyond that we could be looking heading back up towards zero spot 90 And then if you go beyond zero spot 90, we could be looking heading up towards zero spot 90 49 Any move through the downside may find some some support in around the zero spot 88 area And if you break zero spot 88, we could be looking at heading back down towards bottom end of the range Which is zero spot 86 89 All this this the last Market I'll look at now dollar versus the japanese yen So was anything with the dollar yen is that actually broke below? Last week we saw it break below the september low So the market has been in decline since november a classic example of a series of lower lows and lower highs If took out the low here in september, so we've now we've now managed to balance back Now the big question is if it's not the market here We'll look at it now at a weekly chart to give you an indication how far back that is if it's managed the market has managed to take out a low Not seen since august of last year and basically take us back to a level not seen since november 2016 over two year low We've uh when he broke through this price here We created a fresh two over in excess two year low say 20 26 month low So that that tells you Um how well bearish traders are on the dollar versus the versus the japanese yen But now we're in we are in any kind of any kind of correction or bounce back mode So the market is bouncing back the question is will this bounce back just be short live with a turnover itself? And I should have looked to push lower yet again So if you do manage to kind of push higher from here We could have got running into resistance potentially in round the 107 or the 107 32 mark 107 32 Was september's low and it didn't act to support on the way down But you know it is a possibility that a traders would be keeping up for that level north of 107 spot 32 We could be looking at 108 these areas we could potentially see the market push higher because you know markets are moving straight line But we could see the market push higher only to actually turn over on itself and then push lower yet again So keep coming up for 107 spot 32 or perhaps 108 We In order for us to kind of shake out of this shake off this downtrend that we've been in since November It really would probably need to kind of take off this the the February early February high of 110 spot 48 Before it could become more confident that this this that this move Um the negative move has come to an end and if you do go north of there The next day to keep an eye on four will be 111 spot 45 the two-day moving average And then north of that up towards 112 But if the market does manage to turn over on itself We could be looking at heading back down towards 106 105 spot 54 the recent low and then of course below that 105 itself Now what I want to quickly going to do now is I'll show you a few things on our website that maybe have been to you So every every day throughout the day by south of other market analysts around the world here at CBC markets Will do updates on our website Um, so indeed in the uh on the news and analysis section, you'll see what the update the update that they Here at 10 o'clock this morning is posted on here. You can find that by by continuous analysis and all the uh all the um Updates will be kind of collated together and it's kind of and there'll be several updates done Throughout the day will be posted there. Some of those updates are posted there Some of the updates are actually on the trading platform itself In the inside section now the inside section can be found by going on to market Market pulse and the second option down. So some of the some of the updates that we do Details will be posted in the inside section Uh, there's actually going to be a recording of this of this of this webinar is going to be on the inside section within an hour of time Also, what we have here a on is the chart forum and a chart forum is essentially Uh, it is essentially A screenshot of a particular chart and then my analysis or michael's analysis or one of the other market analysis Surrounding that particular chart. Uh, it's updated several times a day and you can actually update things there yourself So feel free to uh to kind of Begin a conversation on the chart forum and the chart forums can be found once again under market tab I then click on the third option down market forum I'm sorry chart forum rather Uh, and then last but not least I just want to talk to you about other webinars under the webinars and events section Where you where you found the login for this webinar? There is a webinar on wednesday the 21st of february at 1930 gmt half seven p.m. UK time It's a guide to modern technical analysis Which i recommend tuning in for and then of course next monday the 26th of february At 1215 i'll be back in the hot seat doing the monday market update and on wednesday the 28th of february at 1930 gmt Half seven p.m. UK time There will be a webinar in the evening on risk management for leverage trading which i suggest You sign up for as many webinars as you can against much information under your belt as you can Well, I do appreciate your patience and I do appreciate you tuning in and listening to me today From all of us here at cmc markets. I hope you have a good day and a good trading week. Thank you very much. Bye for now