Yes, so I've just been informed that I'm using the old Zen.org logo. So just Right, so as many of you know, my name is George on lap and I'm gonna be giving a talk on the technical deep dive of the pvh The new mode virtualization mode So pvh has been talked about for quite a while and it's been worked on for quite a while However, the the patches haven't been quite the patches haven't been submitted yet And although people have a kind of a high-level idea about what pvh is supposed to be about I think there's not a widespread idea about exactly the technical details of how it's how it's implemented And there's not a whole there's not a whole lot of people that have actually done the work of digging into the patches and understanding them and so My goal for this talk is to give you guys a technical overview of pvh at a fairly relatively detailed level So that you can well for one even if you're not going to actually do any programming so that you can understand the characteristics advantages and disadvantages of the mode when you decide to use it or not to use it and Hopefully so that many of you can actually approach the code and understand what's going on And to help us fix issues with it and and and improve it So in order to do that I'm going to start with an overview of pvh and hvm and some of their the things which We wish were better about them and then talk about pvh and then I'm going to do a fairly technical description of pvh from Zen's perspective and Then pvh from Linux's perspective and then we're going to talk about some of the outstanding issues of pvh They still need to be sort of sorted out Okay, so Why pvh in the first place so it just a pv the big issue with pv as we have it right now is the pvm emu code in Linux so the pvm emu code Most of the pvops are kind of out of the way and they're not very expensive The most of the ZEM code in Linux is kind of in its own little area Where the rest of the Linux crowd is happy for it to to live and have its own life and then have to worry about it but the pvm emu code is right in the guts in the middle of the x86 code and This has caused a lot of pain for The the cruel community as a whole so it's very easy It turns out for people not even touching the Zen code or anything related to Zen to accidentally break Things that work in Zen or vice versa and so this causes unhappiness for the Linux For the Linux maintainers The exodus maintainers it causes unhappiness for the Zen maintainers and we would all much be have rather be doing something else Another issue with pv is in 64 bit mode. We have this issue of 64 bit hypercalls are very slow so the reason for this is that in order to Do We need to have three levels of protection At least three levels of protection in order to run a hypervisor. So you need the hypervisor mode the guest kernel mode and the guest users based mode and When 32 bit when Zen was being developed for the 32 bit operating systems There was a user and supervisor mode Which could easily be used to protect to separate out the guest user from the guest kernel We still needed something to protect the guest from the hypervisor from the guest kernel And we had this thing Called a segmentation limit which basically no one else was using and so we kind of Commandeered that and said fine. We'll use this to help protect the hypervisor from the guest kernel Now about the same time that Zen was finding a new use for this basically unused Processor feature the AMD folks were coming up with their new 64 bit architecture and I wasn't involved in the discussions obviously but what I presume happens I said well look there's this here's this thing that nobody actually uses and Every additional feature in a processor is expensive to implement and so they just got rid of it Which means that now for 64 bit we don't have three levels of protection anymore And so in order to implement three levels of protection The guest kernel for 64 bit has to run in user mode and every time we switch between guest user and guest kernel 64 bit mode PV you have to go up into Zen and Do at least some level of on page table Flushing and so on so 64 hypercalls are very expensive So I could table oh, I'm sorry Yes, okay. Yes 64 bit system calls. I'm sorry for that. So 64 bit system calls that are slow not hypercalls Thank you So We could use HVM HVM basically makes an entire clone of the ring zero through three So now you have again four levels of protection for the 64 bit system calls However, it has some things that we're not exactly very happy with first of all you have to have a QMU process Which is an extra level of complication extra level of more memory that needs to be handled and so on You have a legacy you're still doing a legacy boot So you start in 16 bit mode and have to work your way all the way up through to 64 bit mode And there's a number of devices that have to be emulated inside of Zen So the virtual a pic virtual timers and so on So the idea that was kind of kicked around for a long time now is the idea of doing PV in an HVM container And so the idea here is to take the best aspects of PV and of HVM and make a new mode that takes the best access Both of them and so two years ago about two years ago Mootkesh Rathor at Oracle began the work of implementing PVH and he started posting past series to Zendavelle I guess at the beginning of this year so January so I was that ten or other months ago now And it's been gone through a lot of iterations and the most recent set of iterations. I have sort of taken them and Done some significant revision revisions to them and so What I'm going to be describing today is sort of the state of the art like what things are like right now They haven't been checked in yet and then things are not in their final form But if I give you the state of the art right now, then you can understand where things are and you can maybe engage in the discussion And see where things are going And I do want to emphasize Mootkesh did the vast majority of the amount of work for this and so he gets all the credit One of the main reasons that I did the revision So one thing was there was a bunch of things that The Zen maintainers weren't happy with and so I thought that I could do a decent job of Changing some of those things But one of the big things was I wanted to be able to I didn't actually have a very deep understanding Of the pvh mode and the interface between Linux and Zen and I wanted to get a better understanding of that And I thought that forcing myself to rewrite the pastures and also forcing myself to give this talk would enable me to get a much better understanding of that and so I'm happy that people in the audience will be able to correct me if I'm making mistakes But I hopefully the fact that I'm not a super expert in it But I have learned quite a bit mean will mean that I can make it accessible to other people who are not also experts in it Right so pvh from Zen's perspective. So at a very high level You're beginning the atrium guest You disable atrium specific things that you don't need You start it in 64 bit mode and you keep it there and Then you enable a pb path for a handful of things. So that's a kind of a super high level Going into more detail So things that get disabled sense perspective. So you disable the device model QMU and that means disabling all of the MMI instruction MMI emulation Disabling emulated hardware so Zen emulates a number of things that are required for Performance reasons apics and pitstuffs. You disable the that for pvh guests you disabled nested atrium and MSI acts I Think that's yes, okay Then so to pit it in fit 64 bit mode you set initial values for the cr0 cr4 and e4 to make it 64 page mode and then It turns out there there are a handful of things that need that happen in HVM mode when you transition from non-page mode in the paging mode and so For pvh guests You need to make it a special call to how this can happen when the vcpu first boots up because it's never going to Switch from non-page into paging mode since it starts in paging mode And then you basically just disable the guests from changing the paging mode So you disable writes the e4 and you don't allow the guests to change the paging related bits in cr0 0 As far as PV paths you enable a set of pvh hypercalls and If you really interested I have a slide later that has exact hypercalls in it You need a pv820 map because you're not starting with the bios then you need a pv way of getting the memory map The pvh has a special way of doing a vcpu booting and I'm going to cover that in the on the Linux side of things and We have a pvcpu id. There's a number of special cases for cpu id that have to do Dom zero So if you look in the code, there's a whole bunch of extra things that they have to do for Dom zero so we just take the pv path for that and give you that answer and We take the pv path at the moment we take the pv path for programmed IO And we're going to talk about this a little bit later in the issues section So from Linux's perspective sitting inside of Linux Some simple things like pvh zen hvm domain is false then pv domain is true But the most the biggest thing is you just have Linux act natural So there's a huge number of special cases for pv now. You don't have to do any more There are one of the interesting things is there the fact that we're doing what's called all the translation Which means the guest is in charge of its own page tables has a number of interesting side effects that are important to understand So I'm going to go into that and then so we use the pv hvm callback vector setup and There's a pvh the specific pvh vcpu bring up which I'll describe All right, so things disabled this is kind of a nice list to have so there's no pv id t There's no pv IR q ops. So there's a special callbacks that happen after the IR q. There's no pv cpu id We have a native sys call in the center No PV vm assists. There's no event safe callbacks There's no need to set the IO privilege level when doing a certain kind of IO and In particular for mmu watts, there's no need to pin in the page tables There's no need to do a pfn to mfn conversion there's no need to special case the page table protections and There's only one pv You P mmu op which we need to actually have a special case for them and that is tlb flush others And presumably that's because it's cheaper and easier to simply ask Zen to flush the other guys tlb then to go through the whole work of like Sending IP eyes and stuff like that yourself So this is much much cleaner and should hopefully Resulted in a much better interface with with Linux I want to translate so in the pv case page tables are controlled by Zen and We have the real mfn inside the page tables and so you get things like When a pv guest talks to zen it can it can say here's a grand table or here's an mfn Please map it here, and then it doesn't have to work. It doesn't actually have to worry about The guest pfn the mfn can be used just the way that it is In the pvh case the page tables are controlled by the guest and What it writes in the guest page tables is what's called a gpfn So it's the guest idea of the pfn not the actual backing mfn And so every page that is is mapped in an auto translate guest like pvh must be in the p2m So this is one of the key differences between pv and pvh. It has a lot of number of side effects So any kind of a special page versus the grant frame you have to make sort of make a hole in the p2m and then like map it in there Anytime you map a foreign page like if you are running qme or something else like that in dom zero for instance you need to rather than Having the hypercall that says map this mfn in this page You have a hypercall that says map this mfn in this p2m entry, and then you can map it yourself by writing in the page tables And a number of similar things like that Okay, so the pvvcp bring up So the pv is brought up via hypercalls Sorry that the vcps are brought up via hypercalls just like they are the pv case Presumably because in the hvm case you have a local apic and things like that that you can use to send the bring up messages However, because the guest controls the idt A lot of the pv code for loading up the processor Can't actually be guaranteed to work properly So what we do instead is we only set a handful of registers in this case you set the the gs by default So in the pv case typically you would set almost all of the context for the vcp before bringing it up in the pvh case you only set this one bit the Guest gs and a couple of other things cs and eip and then the other state has to be set By the cpu this adds as is booting So minor difference there Okay, a couple of things in pvh that are not yet working at this point so 32 bit it hasn't implemented yet virtual tsc so the only tsc mode that is supported is Reading the the hardware thing directly from the cpu Shadow mode is not yet implemented. So this is not a guest visible thing But I think if we should have some time I can talk a bit later about the ha ha p versus shadow And the vcpu hop plug for the Linux side is not yet implemented And this I'm sure there's a larger number of fixies in the code that haven't been fixed either All right, so a couple issues Um So one is the so the original idea of pvh was to have a lightweight container That would be Rather than having a full heavyweight sort of hvm with all the different stuff in it You would just like kind of get rid of most of that stuff and say we just have this nice lightweight little container That will just do a few things. Okay, and sure that that should be faster However, the reality was In order just to get the minimum functionality of hvm requires Most of the code that's already in a all already in the hvm path. Does it make sense? So we started by saying so Mukesh started by saying instead of using the existing hvm code will Make an entirely new thing a different path that we used for pvh But as it turned out that the two paths were you know, I don't exactly not exact number But say 70% the same Result is there's a very large amount of code duplication And this is really bad from a from a lot of perspective is hard to see exactly what's going on It's also hard to maintain and as bug things going forward and and everything So the current patch that I've done we use the hvm path For the hvm container and we just put in a couple of special cases for pvh And the result one of the results of that is that the patch itself is a lot smaller There's only a handful of things you need to change Another issue that we're sort of in the process of dealing with right now is pio instructions So there's a number of things that the pv path will give you So it allows the guest to do direct access to pio instructions There's apparently think all the pv pit like I didn't I never heard of this before but if you look into the deep code There's a couple of special cases where we say okay. Here's a pit All right But some guests may want to use that so and there's a couple of other things like a couple of tricks That you have to do to be able to access the PCI config space But one of the doozies is that Many platforms will use special IEA instructions not as a normal program diode Which was just a kind of a reader or write but which actually acts as a function call Into the platform stuff. So if you know SM SMM is a system management mode, which is kind of a thing that a lot of People who write platforms motherboard Manufacturers and things like that right to kind of be able to get in little hooks and things under the operating system and so in order to What we have to do to make that work is to actually execute the exact same instruction in Zen using the guest in general purpose registers So there's a whole thing where we on the stack make a little tiny function We load up the guest registers execute the one instruction the I am instruction Which will then trap into SMM SMM would do whatever magic is going to do and change the guest general instructions And then we finish they will return back into normal mode and then we Take all the general instructions and load them again into the guest context and come back into Zen And then finish the thing that we're doing and then return into the guest Which will then of course take the general instruction registers and put them back into the What's that Can we nuke the bias authors from orbit instead unfortunately, that's not So anyway So there's a lot of so right now There's a lot of special cases in the PV path that we have to have if you're going to run Dom zero as PVH Which is one of the main purposes that for which Oracle started the PVH work However, there's some problem with this with this method So right now we just from the HVM thing we call the PVA I opa so one problem is in order to allow the PV code to properly emulate things for PVH guests There's a number of ugly changes that we had to do Okay, so probably three or so of the of the patch series were some fairly ugly changes That had to do with making this possible most of the other changes are very straightforward Just okay simple switches, but these are not very nice Moreover, there's apparently a race condition because Sort of a double checking and I won't go into the thing, but there's this checks that happen in the hardware That before you even get into them and then after that there's there's other checks that Zen is doing and the fact that there's a race between these two sets of checks is a potential security issue So We've just been literally just talking about this earlier this week so The basic the reason that a lot of stuff happens is that in the first place is that we need two sets of access controls one for user Processes and one for the guest right so the guest operating system needs to say this this process is allowed to do these things And then the Zen has to be able to say This guest is only not to do these certain things, right? so in the PV case we only have one set of kind of permissions to Hardware things to do that with and so therefore we need to use the hardware things to Enforce the guest permissions and when you use the and then we emulate stuff at Zen to enforce the Sorry, there's a harder thing so you guess the user space permissions when we use emulation at Zen to enforce the guest permissions but so PV's only has one but pvh we actually have two potential sets of the permissions because the guest has its own HVM stuff and then the VMX code itself has another thing that we can we can control for the guest operating system So it's possible that we may not need to Do all this kind of crazy I am elation anymore and there's crazy I own instructions which need to execute on the stock and that kind of stuff may be able to be executed in the pvh context and that would Also be a big win for then as a whole if because then we could get rid of some of these crazy paths But that's just not idea at this point. We'll have to see if that actually works or not. Okay So I have a little bit of time here one thing I want to bring up just this is some more information on it about pvh It's about h.a.p. Versus shadow so There's a couple key differences between h.a.p. Versus shadow h.a.p. Hardware such as paging Also known as ept in the Intel world or SVM. I think it was called in the The AMD world and the basic idea is that you allow the hardware to do a lot of translation instead of having to do the having Zen So if you're gonna do a page table update in h.a.p. It's really really cheap. It's just a memory write. It's exactly the same as a page table cost of a page table update in Bear mental mode in shadow ultimately because we're keeping they have there's the guest page tables and we have a shadow copy of the Page tables inside of Zen Ultimately every time something is updated in the shadow page tables. It has to Zen has to be involved in updating that and Everything up every time something is updated in the guest page tables then it has to be involved in updating that in the hypervisor page tables before it can actually be used now We have done before HUP came out We did a lot of work in optimizing this path But ultimately Zen has to be involved in every single translation before it's used So this means page table updates for shadow are very very slow um TLB effectiveness, so HAP there's using the same hardware and so TLB's and x86 only have 16 entries However, you can have each entry can point to a 4k page or a 2 megabyte page or 1 gigabyte page And so HAP allows you to use the Increase use the superpages to allow you to have a more effective use of the TLB This is I think another one of the reasons that Oracle is particularly interested in HAP mode It's right in pvh mode is to be able to use the superpages For databases where this is pretty important and in shadow You can allow guest superpages in the guest page tables But when those map into the shadow page tables there's still only 4k pages at the moment And so a shadow will not will not allow you to have the higher TLB effectiveness that HAP will have Okay, so again here's another place where HAP is definite when However, when it comes to TLB replacement costs if there's a TLB miss Now think the things are turned around because in shadow The worst case if you have a 64 bit guest is that you may have to do four memory reads. Okay, so Level one two three and four may require you to to read the memory. Okay HAP your best case if your if your guest is using superpages and your Your p2m is able to have superpages Then you'll have nine memory reads and in the worst case if your guest has Is using 4k pages and you don't have superpages in your p2m then you'll have 16 memory reads 25 okay, oh Right. Okay, so my numbers here wrong so so the the best case is three so that that should be three times four then 12 and 25 Anyway, it's a lot more than four It's even worse than I thought okay, so and does this matter and I haven't done any Performance tests recently, but it used to be the case that kernel build Shout out would be 30% slower than HAP right because kernel build has very very good TLB locality and it has a huge number of Page table updates right However for other things like spec JBB spec JBB it sets up the page tables once and it never touches it again So the H8 so there's basically zero cost for shadow for page table updates. However, it has very very poor TLB locality and so The result is that typically in the past we've done this kind of measurement shadow is about 30% faster than HAP So all this to say that shadow isn't dead. It was still be important in the future and so Yeah, that was the main thing so moving to pvh. This is one of the effects is that now We have to have to deal with this HAP shadow thing and that's going to be something we're going to have to continue to look at in the future Okay, that's all I have All right, so we talked about pv8 hvm and pvh We looked at pvh from Zen's perspective from Linux's perspective We talked about a number of issues in pvh and hopefully now I've given you a technical overview and you will be able to better understand the characteristics advantages disadvantages and Hopefully many of you will be able to approach the code to improve it and to fix it and that's a story With that I'll take any questions Comment With the hardware accelerated pages if you're using large pages then 25 axis is go away and the spec JV slowdown goes away So have you tested that absolutely, okay, so I'd suggest maybe I'm doing another test look at doing Pvh only with large pages or something like that. Yeah, so in general There's then there's no case where shadows faster than hardware paging if you're doing it, right basically, okay? The second so you're talking primarily about in the guest So in Zen making sure that you have using superpages in the p2m Yes, so then tries very hard always to try and touch to do that, right? second question I had was about Not emulating in a pic right with the hardware APIC virtualization that's coming in the household processors And he concerned that not being able to do posted interrupts would actually make pvh slower than hpm in the long run And have you considered doing a pic emulation so that you can take advantage of future hardware support? I haven't looked at it at all. There's anyone else want to comment on that Yan reasons and So you were mentioning about the bootcase where I was not completely clear So when you're booting a Linux kernel in the pvh case You're gonna jump directly into the kernel at a spot where paging has already been turned on So that's what happens in pv mode right now, okay? So in pv mode you construct the you have the domain builder that will inside the guest user space construct the pv Kernel and in an rd and then jump right to it and it's already set up and the paging modes are already set up But you cannot do that with the pvh case Yes, yes Yes, oh, yeah, so I was discussing the implementation of that with hvm because in hvm mode So I was talking about changes from hvm into pvh so hvm you start in Yeah, yeah, you start in real mode and then you go to 1632 da da da, okay more questions my god, you make me run I would suggest the next question come from the guy over there But it makes sense to say for example that you describe that We don't have to start in real mode and there things can be done in an easier way But on the other hand on the guest side all that code already exists anyway, so it's already there It's already implemented. There is you're not gonna have to implement it again So the real reason to have something like this will be performance And so how much performance gain do you get on top of pv on hvm? right, um, so it's another thing I haven't I haven't had time to actually test that yet Sorry That was a joke Sorry I wasn't positive until you actually were there Yes Yeah, so so the main reason so one of the big things that work will wanted from this and with that their target is Is for a pvh dom zero and so basically You can't run a normal pvh vm thing in dom zero you could try to do what is so there's a talk earlier today about Running a pure hvm dom zero And we don't know the technical details of how much how much harder that it is or how much uglier that may be Then just running a pvh But definitely pvh is better than for pvh for dom zero Is the only alternative to pv dom zero And pvh will certainly be better in many cases than pv dom zero because of the system for 64 bit system call overhead. Yes Okay, we've run a bit over time. I can still take one question No, thank you. Thank you


Hey, John Crestani here, and today I'm going to go over the number one success secret that nobody shares. So, get prepared, strap in. I'd have a pen and a notepad ready to take notes, because this is going to be a whopper. Now, barely anybody takes time to reflect. Most entrepreneurs get lost on the hamster wheel, and really never get off to look around. We're talked to hustle, hustle, hustle, and we're never talked to take time to reflect. Now, if you only hustle and you never reflect, you end up hustling on the wrong thing, and you end up using your time inefficiently. You'll also ultimately get burnt out, because you'll get worse results since you never take time to look up or look from down on yourself and reflect and analyze the activities you're doing and the results you're getting doing them. If you take time to reflect, you'll see what's going wrong. You'll start spotting patterns, and you'll be able to address them and analyze them, be aware of them, and fix them. You can also see the bigger picture to actually know where it is you're ultimately going. This not only helps keep you motivated, but it helps course correct yourself along the way. You can also focus on how what you're doing fits out with your overall goals in life, whatever those may be. I've spoken many times before on how important it is to have specific goals. And you might just find out that what you're doing doesn't work out, and it doesn't fit in with your bigger goals. And you might have to get rid of it and switch paths. Only reflection will show you this. From a personal point of view, I really differentiate reflection versus emotional reaction. And there's a big difference. Now, emotionally reactive approach to something is very different than acting based on reflection. One area which I was able to reflect on myself and what I was doing wrong was I was in Santa Monica.  My friend was driving me from whatever, we're at some bar and we were going to a cigar lounge.  And I went downstairs into the parking garage to get in his car and he was driving a minivan. This guy worth millions of dollars over $10 million drove a minivan, but not just any minivan. When I got in it, he said, oh, I've put special modifications in this minivan to make it go much faster. It's like it's a sleeper. And while that was kind of cool, it was still a minivan. And I asked him, why don't you drive an Aston Martin? You can drive any car you can afford any car you want. Why not an Aston Martin or something like that? And what he told me was he said, well, I can't fit my family in there. And I thought to myself, hmm, this is his priority in life, is to have family. And I thought about what my priority in life was, if it was to be a single, to be a bachelor, maybe have a girlfriend or something, to be a bachelor with an Aston Martin, with a Ferrari, with a Lamborghini, or if it was to be a cool dad in a minivan. And I realized that the way I was living my life was I was trying to be the bachelor in the Aston Martin. When really my goal was to be the cool dad in the minivan, or in my case, a truck. So I course corrected. I spent a lot of time and I course corrected. I ended up proposing to my girlfriend at the time, Sarah. And now I have two beautiful daughters and a wife. And I hope I'm the cool dad, but I'm not sure, but we'll see. But that was deep reflection. And I looked at things in perspective to my goals. And I looked at the pattern of what I was doing and where I was headed. Since that time, I also started saving more money. And I started doing a lot of things differently in life, all because of the cool dad in the minivan. But reflection doesn't just pertain to life go-holes or life direction. It also pertains to your specific numbers in business, in marketing. Whether you're doing free traffic sources or paid traffic sources, because you want to be able to identify and cut the losers and scale the winners. I reflect on my numbers regularly in business, so I know what's working and what's not. In fact, before I even start doing a marketing campaign, I already know what numbers I'm trying to hit. I already have an idea of what numbers my competitors are looking at. Now, the more I reflect on numbers in business, the better my campaigns, my advertising campaigns, and my business does in general. You can only manage what you measure. Now, entrepreneurs who know their numbers end up doing very well. Entrepreneurs who don't care about their numbers and are just looking at everything from a very short-term, day-to-day basis. Always end up floundering. I've seen it over and over again. I've been doing business for a little while. Most people are short-term thinkers. I see 99% of you out there are short-term thinkers. Now, if you don't know what numbers you need to hit, you just kind of endlessly drift along from business opportunity to business opportunity. And you may even make a little bit of money. But you never make a lot of money. You want to figure out what sorts of numbers are important in your business so you can focus on them. Now, in affiliate marketing, numbers you're looking at are CPA, EPC, stuff like that. Each business has a particular important number that you want to look at. You should know exactly how many sales, leads, clicks, impressions that you need to hit your target. So, for instance, if I wanted to be making a million dollars a month, I know that I'd have to be getting roughly 1,000 sales per day. If I'm promoting weight loss products, I'd need 1,000 conversions a day because I'm assuming the average product in the weight loss industry for affiliate marketers is $35 CPA. So I need 1,000 sales a day over the course for 30 days to get to my numbers. To get 1,000 sales a day, I need roughly 10,000 clicks per day to the affiliate network on my landing page. Now, to get 10,000 clicks per day, I need to be getting roughly, let's call it, 50,000 people going to my landing page. Now, to get 50,000 clicks to my landing page a day, I would need to get 5 million ad impressions per day. So I'd need to show my ad 5 million times a day. So I'd either need to find search terms that are searched 5 million times a day or I'd need to find websites that get roughly 5 million visitors a day. That's the math to making a million dollars a month. But I broke it down into very specific chunks. So I know exactly what I need to do. How might something like that inform us of what we need to do? Well, instead of focusing on advertising on websites that get 50,000 visitors a day, I'd only make sure to focus on websites that get 5 million visitors a day. And I'd figure out how and I just keep working on getting an ad on those. That way I know that whenever I want, I go to a million dollars a month. Any financial call can be broken down into these simple things. And last but not least is spend time reflecting with a mentor so they can help you course correct. Review your numbers with a mentor if you're coming up short on them. They can tell you how to improve various numbers so that you get to your targets. The numbers you wanted to improve might not be the most important numbers to improve. For example, you might think you need more leads to get more sales. But they might show you just how you can increase your sales conversion rate. Now you're getting more sales with the same number of leads. And when you increase your leads faster, you'll now be able to get to a higher income level assuming you're getting paid for those leads. This is the power of having a mentor who can help you with this. And I'd suggest only get a mentor who understands the numbers. Somebody else isn't really worth it. Now one of my mentors, he recently sold a company for about 50 million dollars. And it was a technology company. He made a lot of money. It was in a similar sector and he couldn't retire. But I mean again, for people who are successful, generally successful people like working. So they don't know what to do. Even when they have a lot of money, they just keep working, right? That's what successful people like working. Unsuccessful people don't like working, right? I had set a standard of three months to find somebody to hire for a technical role in my company. Three months. That's the time limit I gave myself. And it was a reasonable time limit given other conversations I've had with people who were also looking to hire for this particular technical role in their company. And what I did was after every serious interview that I went through with somebody for this role, I would call up my mentor or I'd send him an email or send him notes or something, send him a text. And I'd ask him his thoughts if this person seemed like a good fit to work in my company. Valuable advice, right? Somebody who'd sold his company for 50 million dollars is giving me advice. For free. This didn't come through any sort of pre-existing relationship. This came from me doing outreach and creating new relationships. This came from me putting in the effort. From me, you know, respecting that person's time. And now I have somebody who's made tens of millions of dollars to reflect with. Now, how did I show this person I was worth talking to? And after my first conversation with any mentor, I do everything they tell me to do. And I only follow up with them once I've done everything that they've suggested I do and gone above and beyond. Now, I've had a number of people ask for me to mentor them. And I've given the same advice. I said, move out to Malibu, California, do affiliate marketing, make your first couple sales, and get a job in the marketing industry. Not wildly complicated things. Nobody's done it. I'd be happy to mentor someone, but they have to do those three things for me to even consider it. Most people, they only want to hear advice that resonates with something they already believe in their heart. Most people way beyond 99% of people are unwilling to take advice and do things they are uncomfortable doing, even if that person is more successful than them. Whereas in my case, I've trained myself to be able to identify people who are more successful than me. In this case, this person's wealth is public record. Their company sold for over $50 million. So I know this person is more successful than me. Therefore, when this technical person gave me their advice on what to do, I knew I could trust this person if I'm looking to become wealthier than I already am. And even though their advice felt uncomfortable and I did not agree with it and it didn't make sense to me, I did it anyways. It's really weird that my business is being led in these directions which I don't even know. I don't even feel comfortable with. We set up a different corporate brand for myself which cost me thousands of dollars. I spent the last three months hiring for a role that has zero revenue impact in my company. In fact, it just costs me. This new department I set up is costing me $30,000 additional a month. I don't know, it's technical stuff. I've always just outsourced the work for cheap. Why do I need to hire an American for this role? But again, I take the advice of my mentors. I'm willing to do things I don't even agree with and I'm uncomfortable with because I trust the process. And the process is to become wealthy beyond your wildest dreams, you need to follow people who have already done it before. And it will probably lead you to do things you've never been willing to do before. So I hope that helps. And let me know if you have any questions for me in the comments below. Subscribe to my channel if you enjoy hearing about marketing and mayhem and success and mindset. If you wanna talk with me kind of casually, I don't spend much time with people on the internet, honestly, but if you do wanna talk to me casually, make sure to follow me on Twitch. And I play games occasionally. I play RPGs, JRPGs, card games, et cetera. So you can follow me there. And I don't know, maybe we could talk casually. And also if you want to really learn this stuff, I encourage you to join my Discord chat community. People learn from each other better. People learn from groups better. It's a mixture of one-on-one learning, just knowledge in books and group learning. So that's what works best for social creatures. So I encourage you to join the conversation there and add value. Once you join our chat community, our forum, add value to three other people's lives before asking for value in return, okay? Remember that. Answer three people's questions. Help three people out before you ask for something. The universe is gonna be treat you way better if you give value before you ask for value in return. If you notice, before I tune off, I'm wearing a blue origin T-shirt right here. I'm wearing a blue origin hat. This is Jeff Bezos's space company, which is the goal is to go out to space, establish a lunar base, and then use that as a launching pad for asteroid mining expeditions. The first trillionaires will come through asteroid mining. The amount of wealth and resources in space are enough to really end all wars and make everybody millionaires on the earth. So this is where abundance happens. What will happen is if we don't go to space and we don't mine asteroids is more people will have more babies and there will be less land for each person and more people and countries will fight over increasingly scarce resources and will end up in a form of communism and war and caste systems that just really allow for no social mobility and a lot of people end up dying and there's a lot of problems, okay? That's what happens. But the good news is that there's unlimited resources and all this can be prevented if we just go to space. So I encourage you to just start looking into space and asteroid mining and skills to go to space. And if you want a radical change in your life and you want to become successful in a radically different way, look into space, look into the skills needed to join the US Space Force, for instance, sort of work for a company like Blue Origin or Elon Musk's SpaceX or Richard Branson's Virgin Galactic. All of these companies have a huge demand for skilled people right now and not enough people are going into the science, technology, engineering and math careers that support space programs. So I highly encourage you look into these things. Learn. There's so much opportunity right now in today's world to become rich from the internet or technology or software, space or all these things. There's endless amounts of opportunities out there but you need to go out and do it and acquire those skills and it's gonna be hard work, especially to go into space but they need you. And if you live in America, America especially needs you to go into these sorts of careers and help these companies out because that is the next frontier. That space is where we belong because we were born into paradise. We need to bring what's out there back and help make this paradise even better for everyone around us. Sorry, I went on a little rant about space but I'm gonna be talking more about space moving forward and why it's so important we go up there and really become entrepreneurs in space. So talk to you soon, have a good one. See ya, bye.


Well, what's going on guys got Kyle here with the late in sports cards and we are ripping four boxes for Robert H We got a leaf metal jumbo Contenders optic. We've got illusions football and we've got a 2023 select draft picks football. Good luck here Robert We hit two PMGs actually puka we had a PMG to 50 of scoot Henderson and we hit a PMG to 100 of Jackson holiday Some pretty good names too, man Out of that set that might be one of the better young guys some of the better young guys in the set Obviously Jordan would be sweet Tiger would be sweet, but as young guys go. That's those are two pretty good ones She ain't a happy boy freaking Salzburg man Salzburg all righty. Good luck Robert. We got the leaf metal jumbo to start us off First up we have Jalen Hyatt. That's gonna be the Giants rookie mo so money two of two Nice low number there for you Rob to a two Jalen Hyatt This one is purple Brian branch rookie the two of five on that one Brian branch out of Bama This one is orange cam Smith. This orange is two of three cam Smith rookie We've got fuchsia a trey Palmer rookie out of Nebraska there five of five trey Palmer We've got a state pride auto. This one is Cameron Latu Looks like also out of Bama there one of one one of one on these state pride out of Florida Nice one there Latu Hang that 2k. That's awesome Armed a dangerous got a Devin Brown armed a dangerous there Three of five on the Devin Brown got Isaiah Spiller. We'll do it mr. Combo one of one on the sign pre-production proof Isaiah Spiller Jameer Gibbs lions two or three Yeah, when I saw I like there's no way because there's nine of them and there's I think they're all hauling different teams I mean not all different teams. I think I don't know and it can't be all nine haulings He didn't play for nine teams, but Brock Bowers. I know I've seen like a man city one There's a life sig one three of ten there Brock Bowers the uh good tight end out of Georgia And this one is so money travion Henderson on our one of one pre-production slap Travion Henderson the uh Ohio state We're running back only one of one slap nice one there Robert. We'll do uh select. We'll keep the draft picks going We'll do illusions. We'll end with contenders Are they all hauling Shane that's interesting How were there nine though if he's only played for what three teams? Oh, maybe there's three of each. I don't know Tell four so you can keep this combo spot Ha ha ha gotcha I'll let him know Shane So funny at the national and he got it Silver breeze just staring at you. It was just to look up to scotch Tri-color miles in maripeto 199. It's like got a Jalen Hyatt um Hyper and we got 400 points for your robert Jordan Addison on the rookie um phenomenon And brice young this one is tight eye to 25 There you go robert I don't do number one pick in the draft for the panthers to 25 We'll mag this one for you robert Phenomenon brice young I don't do you go robert Christian mccaffrey might we might have heated up here at some point. Sean. Oh, I don't know what's going on We might heat it up here at some point Yeah, guys hit the like button if you're enjoying the stream Does help us out appreciate it. Yeah, that's a sick one, man. We'll take a brice. We'll take a brice the number one pick There's a rookie brice silver is jalen hurts And a jalen carter on the hyper And cj strow this one's purple to 75 nice strow there as well rookie cj strow the second pick in the draft there for the texans the 75 First auto is youth explosion tray tucker rookie auto davante adams got sensations levis and lt Hey, good morning. Ian. How you doing? How are we doing today? Good morning Got another tie-dye another tie-dye Silver is juju and it is travis calcy on the tie-dye there to 25 Nice one there the best receiver in the league travis calcy to 25 We've got nick chubb on the tricolor that one is to 199 and Looks like our auto is going to be rookie auto zack charbonae Gonna be the seahawks rookie uh running back here charbonae for ucla jimmy or gib sparks Got a silver sparks jordan adison. Alrighty guys. We'll do illusions next and we'll finish with contenders optic Good luck Hey, happy friday to you too as well as well. Ian Hope you have a good one, sir. Where you uh, where you watching us from? You're uh waking up Probably like georgia rookie kenny pick it I'm like i'm outside your door actually Ooh nice to ten we've got gold rookie auto damien pierce mystique to ten Yeah, we're a little warm right now We're a little warm. There you go robert Damien pierce on the auto five at ten And debo on the operation detonation Hey, well, I appreciate you joining us uh ian Appreciate you hanging out in the chat Yeah, we're about to uh, we're about to get out of here a little bit It's the uh, it's the opposite morning for us. We got a drake london rookie Kamara this one is digs to 299 And mystique um james cook to 199 Come on now Let's keep it going robert Let's keep it going This is dual jersey card mike vick and desmond ridder on the deja vu Don't know that I see the uh comparison too much on them. Yeah, he runs ridder runs. I guess there's a rookie, um Shining stars garret wilson. He is uh, not quite as successful as mike mike was originally No, did you he was in uh, chicago? Yeah, he's probably was it uh, he signed autographs probably for whatever Garrett wilson rookie A tri-star booth or whatever. There's a red to 175 j jetta He still looks like he put it bailey zappy mystique Yeah, he probably could Got another damien pierce this one's jumbo jersey and send impact And kamara on the amazing Delic here Now you've been good to me tonight legendary, uh collection there to 30 we got nazi it's nazi and the bus there in the trophy collection terry mclore into 499 and king of cards josh allen to 399 Can I grow a handlebar? Probably not. I don't think much else grows on my face Got a jameson williams rookie. I can't do the whole beard Desmond ridder rookie Yeah, I know I don't know if I can get like I don't know if I can I can probably get low I don't know if I can get like thick enough there though I don't know. It probably it would probably look weird for a while It'll take me a couple months. There's a 99. We got first impressions rpa karsten strong Yeah, for holster. It'd take me Long time brother I'm a leak willis operation detonation brother for the titans Yeah, I don't know I don't have to I don't have the chops for that go all the way down Kirk cousins. We've got a michael thomas to 299 and That's funkadelic, man True breeze. That's a funkadelic Sam's name on uh I know on On whatever fanatics and then today for says, you know that your name is going to be your breaker name He goes, what? Really he's about to be funkadelic lsc John dotson, we've got uh ricky breeze hall This one is the 25 for the fins Tyreek hill nice illusionist auto. There you go, Rob Don't see too many tyreek hill autos. That's a nice one there on the illusionist It's a 25. It's been a great uh box of illusions here And we've got rus I know he liked that one the cheetah Oh see me with no stash. Yeah Yep, there are some pictures out there And this one's the 50 tyler locket. It's a sick-looking parallel cracked ice and mystique dotson Alrighty there mr. Robert last one here. We got the 2022 contenders optic football Yeah, he is pretty good not bad rob Let's close out nice with the 2020 contenders optic or 22 We have red that's going to be dan jones dan jones for the um Giants to 175 we got lottery tickets silver of two For the fins I was from like two years ago. I think it's on our uh on our instagram or something It was a top golf like two years ago There's a uh seiquan And romeo dobs rookie And we got 900 points robert 900 points And variation on the rookie ticket auto is treylon berks for the titans Treylon berks Alrighty there mr. Robert that um that will do it for your four box personal some nice hits there my friend We'll get these right out to you. Thank you


design circuit as simple as possible involving three switches whose closure properties are given by S1 in the table given. This is the table given in which we have different values for x, y and z which are the three switches and we are given the values for S1 also. Here we have to design a circuit as simple as possible. Let's proceed with the solution now. First of all we need to form a function f1. For this we will consider the values of f1 as 1 only. Now in this case when the value of f1 is 1, x and y are 0 and z is 1. So we can have f1 equal to x complement as x is 0 into y complement as y is 0 into z as z is 1 plus now consider this row in which we have the value of f1 as 1. In this case x is 0, y is 1 and z is 0. So here we have x complement y into z complement plus consider this row where f1 has value 1, x has value 0, y has value 1 and z has value 1. So it would be represented by x complement into y into z plus consider this row in which f1 is 1, x is 1, y is 1 and z is 0. So it would be x into y into z complement plus consider this last row in which we have f1 1, x, y and z are also 1. So it would be represented by x, y, z. So we have formed the function f1 as this. Now we will simplify this function. For this Boolean algebra the sum operation is commutative. So we have a plus d is equal to b plus a this is the commutative law. Now using this commutative law here we get this is equal to x complement y complement z plus x complement y z plus x complement y z complement plus x y z complement plus x y z. Now we have this distributive law that is a into b plus c is equal to a into b plus a into c. Now we have a commutative law that is the operation product is commutative. So a into b is equal to b into a. Using this law in these two terms we get this is equal to x complement z into y complement plus x complement z into y plus x complement y z complement plus x y z complement plus x y z. Now we will apply the distributive law in these two terms. So applying the distributive law now we get this is equal to x complement z into y complement plus y the whole plus x complement y z complement plus x y into z complement plus z the whole. That is we have applied the distributive law for these two terms also. Now further for element a there exists its inverse a complement such that a plus a complement is equal to 1 which is said as a complement plus a and this one is the identity element for the operation of product. So this is further equal to x complement z into 1 plus x complement y z complement plus x y into 1 that is y complement plus y is 1 z complement plus z is 1. Now further a into 1 is equal to a which is equal to 1 into a where this one is the identity element for the operation of the product. So this is equal to x complement z plus x complement y z complement plus x y. Now here also we can apply the distributive law and so this would be equal to x complement into z plus y z complement the whole plus x y. We have another distributive law a plus b into c the whole is equal to a plus c the whole into a plus c the whole. Now we will apply this distributive law for this and so this would be equal to x complement into z plus y the whole into z plus z complement the whole plus x into y. Now further this is equal to x complement into z plus y the whole into 1 that is a plus a complement is 1 so z complement would be 1 this whole plus x into y. Now further we have x complement into z plus y the whole plus x into y. Now where plus y the whole into 1 would be equal to z plus y. Now we will apply the distributive law here so this is equal to x complement into z plus x complement into y plus x into y. Further x complement into z plus again applying the distributive law here would give us x complement plus x the whole into y. So this is equal to x complement into z plus 1 into y that is x complement plus x is 1 so further we have x complement into z plus y this 1 into y would be y. So this is the function f1. This is the simplified form of the function f1. Now we will design a circuit for this. This is the circuit for the function f1 that is x complement into z which means that the switches x complement and z are in series plus y shows that y is in parallel with the network of x complement and z. So this completes the session. Hope you have understood the solution of this question.