All right we're going to start. Good afternoon everyone. The EuroBSD confirmation is thrilled to have Mr Alexander Bloom today, talking about performance measurement on OpenBSD, so performance and OpenBSD can mix in the same sentence, which is good. Thank you very much for being here, Alexander, and I'll leave it up to you. Thanks. Thank you. So I'll start with motivation. I work for company Genoa and we build firewalls based on OpenBSD and we want to know how fast they are. Especially we have several requirements, we have customers who are asking for numbers, we have hardware guys who have to choose the next hardware, we have developers who want to see regressions and we have marketing who wants to publish numbers. So we started to build a high-performance firewall testbed, which can reproduce some graphs and as you can see here, is that you can't see much. Problem is it's not written there, what is measured, it's going up and down, you don't have a reason why that happens. So I was feeling that we need something better. Before we were just wondering, we upgraded OpenBSD version, then we got some other jumping numbers here and I wanted to make a more detailed analysis of what's going on with OpenBSD performance. So the reason why this graph looked that bad is because we have a very complex setup. We have a lot of requirements, too many requirements, so we have multi-users using those targets in parallel. We have some machines that generate traffic, those are here, so we have some machines generating traffic, it's quite old, so those are only capable, oops, sorry, got the wrong, press the wrong button, sorry, sorry, sorry, here. Okay, so we have some machines, they are quite old, because they produce one gigabit of traffic, we accumulate that to 10 gigabit, send them through a target, collect it here again, do it in several drain machines and see how and measure the throughput. And by doing this in the switch, we have a lot of disturbances there and you don't get reliable results, you have other people using this, and that is the reason for the numbers jumping up and down. So what I want to have is a design like this, because I have to reduce complexity to get reliable numbers. So the other thing I have done before is doing regression tests, so and there I was focusing on to visualizing what happens, so I run those tests every day, so that's a day of testing, I run them on several architectures and you have a lot of links and this is published on my web page, it's public, and you have a lot of links. So if you click on this fail, you see the test output and can figure out what's going on. If you click on here, you see the DMAs of the snapshot that is installed, and here you can get every result on that day, you can figure out which version was installed, when was it measured, the first line is the date where the measurement was running, and when you click on here, you get to the OpenBSD CVS web repository and see what has been changed in this regression test, what was it somewhere, what was it related to change in the test, and when you sort it, so now we look at only the results for I386, so it's much clearer impression of what you have, so it's sorted by the failing test to the top, and so you see the things you should care about, and it's sorted in the history, so you can figure out, oh, here between the 13th and the 15th, something happened and this test continued breaking, so you know where you have to search, so we have history and we have severity, and for regression testing, that's quite easy and quite common, and I wanted to have the same thing for performance testing, so what did I do there? So here my goals for the system I built, based on the two things I've presented before, I want to see the history, I want to have reproducible numbers, so that you can rely on them, you want to have to click on something and see what are the date details, what has been tested, when has been tested, what are the lock outputs, you want to have drill down, so here we have a lot of commits in the tree and you don't know which one is really the relevant one for the change in the performance, so you want to say, okay, was it here or was it there, and drill down to this thing, and you want to do some automatic testing, those regression tests are run every night, so you can wake up in the morning and see, okay, what did break this day, and I want something similar for the performance tests, and there I created a cron job that collects the data of the last week, every week, so the principle idea of the design is that you start and install an OpenBSD release, we release every half a year, and that's the base where we start from, and then I say, okay, let's, oops, got the wrong button again, here, so here we check out at a certain date, we have a CVS system, and you can say, check out this date, basically I want to measure the performance of the kernel, I could do a full build of the whole system, but that takes hours, one and a half hour for example, but compiling the kernel only takes two minutes, so I just want to test the kernel, I compile the kernel, I run the tests, then I advance by the step, the step is configurable to allow this drill down feature, check out the next date, compile the kernel, run the test until the whole series is done, then I collect the results and draw those nice graphs, so the first thing you get is a webpage where you can say, okay, somebody did a measurement at this date, he installed version 6.4, and then he checked out from this date to this date, and the step was one day, so every day is measured, so that's one of those columns, one column is one test run, and it's running in one day steps between this date and that date, when currently a test is running, you can click here and you see, okay, this machine is doing there, and it's going there, and if the kernel panics in between, you can see everything there. Here we have some details shown, and here we have exactly the test that we run, so here I run a TCP bench with some parameters, so you know what's running, when you go drill down, when you click on some things here, you get even the whole lock output of the command. So now we click on here and get one of those columns, so what happens in one test? In one test, we have here the checkout date, so we check out here, here, I said before that are one day steps, and no, it's a week step, here's written one week, so that's a week, and a week, and a week, and we run those tests. So to figure out whether the numbers are reliable or not, I have to run them multiple times, so in this case I run them five times, and here you see the maximum throughput. So what I do here, so here you see the average numbers of the five measurements you have for this measurement, and here again you see some locks and can figure out what happens. Here you see the number of kernel commits between this measurement and this measurement, so you can even click on the CVS lock, there you see all the commits collected, so you can say, okay, what happened between here and here, and also I have to do some build quirks, I'll explain later what that means. So here we have the average number of all the tests, and as I said before, they are jumping up and down, and I made them red, and those numbers are not consistent, so if they change a lot between in each test run, I mark it here, and what I've also find is that I have very unstable results, so in this column everything is bad for some reason. So I can click on the next time, so I click the one back when I click here, and it goes to the next one, and I see everything that happens in those five measurements, one, two, three, four, five, and what you see here, that we have an outlier, so this measurement for some reason went pretty wrong, so here we have 3.9 gigabit per second, 4.0, 3.8, and here we have only 1.6. Actually, I don't know what happened here, you see it in the next graph as a picture, here something really went bad, so we see that this is an outlier and marked red, and it's shown as red in the upper graph, so you see, okay, here we have a problem. So one thing in this graph is indeed a single result. Yes, so here, then from those numbers I generate GNUflot graphs like this, that's the thing you have seen before, we are running a whole release, that's 6.2 to 6.3, and we do it per week, and we run five measurements each, and the outlier you just saw in the table is this one. So on some measurements we have only 1.6 gigabit, so what I see, it only happens on the two socket machine, we have here this machine has two sockets with four cores each, and with this hardware configuration it's very unreliable, then I get these outliers, I have not figured out why they happen. And there's also one thing that I want to show you, here we have an outlier that is faster, so all measurements and this day were faster, and what I will develop later is how we can figure out what this is. Okay, now let's explain those quirks. You see those vertical lines here, with those letters on top of it. The thing is that the open VSD kernel is not self-contained, you cannot compile it just on a random system, you have to compile the open VSD kernel with a base system that matches to its checkout date. So when we change compilers, then we have to adapt the kernel sources to make it compile again, and so we have to make sure that we can build it. And on the other hand, when I want to speak about open VSD performance, if I have a change in the tool chain, for example, if I change the compiler, then I also want to see the effects of that. And in this case, I recompile parts of the build system. I don't do it all the time because it would be much too slow, but here I can say, okay, we got a new compiler, I have to compile it. And then I draw some vertical line in here. There are also some other places where I have to do that, when the system gets incompatible. So here, incompatible between kernel and userland, if the system interface changes. And here's all the things I figured out manually what to do to compile an open VSD kernel just before 6.3 when you have installed 6.2, then you have to adapt the build chain and the userland in that way. So the first thing I figured out I have to do is to fix CVS, because I cannot check out the compiler because there was a bug in CVS and it picked some wrong files. So the first thing I patched my build system to fix CVS and then the next step is we had a compiler update to 5.0 and we can fetch the right compiler. I recompile the compiler here. Then there is PF and PFCTL, that's PFCTLC userland program, and they have a common header file, that's PFVAR. And sometimes in PFVAR, the system interface changes. And then the old PFCTL cannot load the rules into the kernel and then we have no rules and then the performance changes. So what I did is just tell him, okay, recompile PFCTL. Here somebody, next one, the E, somebody made a mistake when he committed the kernel. He forgot the file and the kernel didn't compile anymore. Normally such things are fixed within hours in the open VSD tree, but when I do the CVS check out exactly at the moment where it was broken, the kernel doesn't compile. Then I just apply a patch and fix it. So here, again, the PFCTL header files changed, so I have to recompile the userland. Here same for Sysctl, then Clang was updated again, PFCTL was changed, and then we are at open VSD 6.3. So the graph from before changed a little bit by this quirks. We do the kernel check out, we recompile the kernel, we run the tests, we want to advance, and now we check, is there some incompatibility change in userland? I have a list of this, and between the last date and the next date, if there's a change, we check out the userland to build our tool chain and go to check out the kernel. And then we can either go the short way to be fast or the long way when it's necessary. So that's my hardware setup that I actually have. So I have two machines, one is a two-socket machine where I have this unreliable results, then we set up the same setup and just removed one of the CPUs, and this machine is much more suitable for performance testing. You have less jumping around. And what my future plans is to have some Linux machine here to get some performance here, but I have not implemented that yet. It's just a plan, but the machine is already there. So how is the hardware controlled to do things? So I have a master machine that's this one. Here, all the scripts are started and run. So here it's also running a web server where I publish my results. I have a console server, all those machines, both target machines are attached to a serial console, and I have some reboots, install scripts and automatic reboot. I use the auto installer from OpenBSD to install those machines with a release software. So you say, okay, install this with 6.3. And then the master logs in into these machines and compiles the kernel. Compiles the kernel, runs the test, extracts the results and checks out, compiles and runs. And then here we generate new measurements and we reboot all the machines over the time. Okay, what have I found out? So that's the graph from before, and now we switched from weeks to days. Before I had one outlier here on the top, I have called you two, remember? Now I have two of them because I am here, here is a day step in between. And now I can find which are the commits here and which are the commits here and what happened there. And here it was the case that DLG committed some TX mitigations. That means that when you have network packets, that should go out.  And that makes it faster. That was here. Two days afterwards, Claudio, another open BSD developer, complained to ICB that his suspend on laptop failed and the laptop crashed and then it was backed out again. So we dropped performance again, but Claudio's laptop was stable again. So back to the outliers, these here. I wanted to figure out why is it jumping so much? We have those outliers and also here we have several measurements and they are not one dot. So we have several things. I run some TCP bench, I run some iPerfs, but also the iPerfs on the same setup is moving. So I thought, is there some difference what I can do?  Can also run 10 tests in a row. It's just a parameter. And what I can do is run the test multiple times. So I compile the kernel, run the tests and then I can either just run them again. I can reboot the machine and run them again or I can relink the kernel. In open BSD, we relink the kernel at every reboot to make a random kernel image, to make it harder to do attacks on the open BSD kernel. It's an address space randomization. And it's done automatically at every reboot in open BSD. And before starting that, I just disabled it because when I reboot and it starts relinking, it affects my measurements. So what I did first was this here, just run it again without relinking anything. Then I started, okay, let's reboot it, see if something changes. And then I said, okay, let's turn on relinking the kernel again and see what happens then. So on that level are the findings with those options, what you can do. In this kind, slide, I keep the machine running. And I took one day, so that's the first of August and that's the second of August, and split it in six parts. So we have four hours between each of those. And what I inserted here are the commits. So this one is DLG, committed pseudo driver that isn't used yet. It's something like trunk and I don't use it. And it's just there. It's just compiled in the kernel. Here, Visa committed something for the Octane platform, but I'm using AMD64, so it's not relevant. And here, I fixed some unveil back in the file system. It's also not relevant. And now we look at the numbers. Here we have 3 gigabit. And here we have 3.5 gigabits. And now we are here. And here we have a driver in the kernel that we don't use. Here we have a commit to the platform we don't have. Here nothing happened. No commit. No commit. Buck fixed somewhere else. No commit. So why is it going up and down? So what I tried next, I rebooted between each of those dots. So here we have those measurements that are happening with the same kernel. And I rebooted between each of those dots. Here I have to reboot anyway because I recompiled the kernel. But now I reboot here. And we see it's still jumping. Oh, it's jumping down. And it's basically the same code. So what I now did is I relinked the kernel. When I recompiled it from here to here, to relink it anyway. What I can also do is relinking it here and shuffling around the object files for security measurement. And then it looks like this. So by relinking, by just moving the objects up and down, the performance changes. And now you see that those commits are completely irrelevant. It's just a layout of the files that changes that. And we are between here. Here's 3.1 gigabit. And here is 3.45. So it's pretty much. So I want to explain again how it works. So what the security mechanism of OpenB is doing. So when the boot loader loads the kernel, it looks like, oops, got the wrong button. Here. Okay. When the boot loader loads the kernel, it looks like that. So we have, here's the boot loader. Here's the low core 0. That's the part of the kernel that's setting up page tables in a very basic way. And the boot loader has to know where to jump to it. And that's the start function. So this one is a fixed address. And by relinking the kernel, before booting it, we add a random gap so that those object files are jumping up and down. And we have a linker option that shuffles them randomly. So when an attacker wants to know, oh, where's the address in object 4, it's completely different at every boot. And the low core jumps to the main function, which is in this object file. And after starting, this part is unlinked from the address space. The thing is that here you have the pointers to there. So if the attacker can read that, he can figure out where this object is. But not in OpenBSD, because this here is unlinked. And you can't see it anymore in the address space. So nice thing for security, but bad for reproducible performance. So what I did now. I sort those object files and I set the gap to zero. And now everything is good. See here? So what's that? So here we have a file, a commit that's not used, but an additional object file in the kernel. And of course that moves all the other object files that are above it. So they are sorted alphabetically. So everything after T is moved. This means we still have some moving effects of performance. And I made a test. I just add a random gap. So I sort them alphabetically, but I just move the gap. So move the kernel up and down. And it starts jumping again. So what I can do now. So my thing was, okay, it has to be something with alignment. So cache lines, page alignment, what's my guess? And what I do now is I align those each object file at the page boundary. That means the kernel gets twice as big, but for the test it's irrelevant. And what I get is very precise values here, but still this one jumping. And the thing is that this one adds quite a lot. And the other objects above it start jumping by whole pages. And that's still relevant for performance. So my previous theory that it has to be something with page alignment or cache alignment is wrong. And I don't know why it jumps. If you execute the object file at a higher address, even it has the same alignment page-wise, it changes performance. I did some measurement here. So I took NM to get all the symbols and addresses. And I sort it and I div them and send them to div start. And here with the unveil change, that is very local. When I use, when I just sort it, the, it affects much more code above it until it gets some with alignment, it fades out after a while. And then the addresses in the kernel are the same as before. But if I use the alignment kernel, it gets much better than all the changes are only in the symbol of the source file, all the changes and addresses of symbols are within the source file of this unveil source file. It's somewhere in the file system. So here it works perfectly. Changes are locally. But here with the other with the new driver added, it doesn't help. So everything above it gets new symbols and it's completely somewhere else. Sorry. So what did we do? Now we have 64. I run it for 15 days. Let me see the next slide. Ah, now I know what I want to explain. Okay. So I took the two CPU socket machine. That was that with the outliers. And here you see, we have this line. That's where most of the results are. And there's a shadow line where only one result is in between sometimes. So I checked the slides where you have all the page where you have all the results. And you see that's the first try, next, next, next. And it's always the second cycle. So when you keep the machine running, I don't reboot here, run the test, run the test, run the test, run the test, run the test. Then the second cycle has different results. And they are much slower. No, they are 10% or 20% slower. And I don't know why. So what happens there is that by recompiling the kernel here, the times on the CPU, how much it was used is changed. And then the scheduler decides to run the threads on other processes that might be on the other socket. And that affects performance that was relatively clear to figure out. But then, if you recompile the kernel again and go to the next column, then the performance gets higher again. And that happens reliable on the two socket machine, but not on the one socket machine. And it's... So this going up again, I can't explain. So now what I did now is moving to the one socket machines, because the other one is just crap. And I did the... So the colors change. I give each measurement has a color in this new plot graph. And so we... Depending on whether it has the parameters for the four CPU or for the eight CPU machines, it changes. So that's why it's green and red here. And here we see again this TX mitigation that was this two-day performance fix. What I also do is compiling the kernel and measure how long it takes. And here we upgraded to C-Lang 5.0 and it got a little bit faster. Here we upgraded to 4.10 and also get slightly faster. And here we added some meltdown fixes. So it made it slower. We don't see this on the TCP graph. It's only in the kernel compile time where it affects it. By the way, this is the system time where we spend in the kernel. That's the real time. That's where we are actually in the compiler doing real stuff. And that's the combined time how long it takes to compile the kernel. What has to be mentioned, it's not a clear measurement because we run on the kernel, we compile the kernel, so we depend on the source files we compile and we could depend on the compiler. It's not made to figure out what's going on, but it's made more for the fact that a lot of developers say, oh, my machine got slower when they compiled their kernel. What happened? And I just want to track how the build time takes. And there's one other thing. When you have those network performance, the fast numbers are higher. But here's the time to compile the kernel, the good numbers are slower. So it's going up. So now we have TCP performance from 6.3 to 6.4. There we have multiple things. First of all, here we committed red poline. That's a spectra mitigation where we make function calls more expensive because we trick the branch predictor that it doesn't find, that it doesn't remember where we jumped to. So spectra attacks get more difficult, but jumping on function pointers also and the network stack does that a lot. So here we lose performance. Then we have added witness. Witness is a tool that we copied from FreeBSD that helps you to find mismanagement of locks and deadlock prevention. And it's more or less a debugging tool. And we were running it for a while in our kernel just to see other reports and can we fix it. So it was never planned for release. We know that it would be slower. And here we enabled it. Here we got another security feature that's Red Guard. Red Guard makes it harder to exploit return-oriented programming ROPs because those ROP slides that you have at the function stops before the return, we have an additional check before the return instruction to figure out if the stack was mangled and some attackers doing evil stuff. So we have more jumps, more compares, and it gets slower. That's here. And here we disabled witness again. So it was a debugging test for just one, two months or one and a half months. We enabled it again and now we got performance, but it was much less than before. And here it's more or less constant. And you still see we have a broad range of performance because I didn't get the numbers they will get. So when we look at the compile time, here we updated C-Lang to 6.0 and since them updating the compiler made it slower. Then we added a new DRM. That's the graphics driver. And it added new files. So compiling the kernel gets slower because we have more source files. So that's expected. Here we see again what we had before. We had you especially see it at the system time because system calls get more expensive. Here we have witness. That's a kernel feature. We have red guard. That's kernel red guard. So system time goes up.  That's also kernel. So it happens here. And here the system time got up. But here it got down. So when I started doing this project, I was around here. And then I saw, oh, what happened here? The system time got down. And it was a bug in the kernel. We changed the way we measured the time. And we forgot some times, especially the spinning times. About mute access was forgotten to add to the system time. So this time is just a measurement error. And here fix the bug. So now we go from 6.4 to 6.5. So nothing really important changed here except here. We have added safe arcs. Safe arcs is a feature that we copy the register when we call a function. We copy the content of the registers to the stack. Because when the kernel crashes, you get a trace, a back trace. And then you see all the arguments that were given to the function which makes it much easier to debug. But it costs time by copying it from the registers to the stack. And you can actually see it. So I made some drill down and it's exactly this line. So now the name, same for kernel compiling. Here we changed the linker. Before we had the GNU linker. Now we have the CLANG linker or the LLVM linker. And what you see here, that's the link time. And it's pretty constant here. And now LD is multi-threaded. And that's the reason why the link time is not stable anymore. It's going, depending on how the threading works, it's faster or less fast. So here we changed to CLANG 7.0. As usual, compile time goes up. Then we changed to, we created a library out of the compiler. And it said, okay, we create now the compiler, use the library and talk to it with Patrick yesterday and said, oh, the compiler doesn't use it. So this change is irrelevant, but you still see it here in the build time going up. The reason is that it's a quirk. So I recompiled here the compiler because I saw, okay, we had this change. But here in between, there were also some changes to the compiler. So one of those changes between the full compiler build here and the full compiler build here resulted in this little, being a little bit slower. So what we did here is we recompiled the compiler again because we had a stack protector in there and the red guard. And when you have a red guard, that's the stricter thing. Then you disable the general stack protector. Okay. So compile time got a little bit up. But again, I compiled the whole compiler, could be something hidden in here. And the system time got a little bit down. So the kernel, it's only kernel stack protector that's removed. So the system time is a little bit down. So it works better. So that's the newest release. So that's 6.5 to now. So we told DLG about the problem that the performance, no, not the problem, the thing that his TX mitigation made it faster. He said, okay, now I'll try to make the diff again without breaking Claudio's laptop. And that was committed here. So performance got up. Then I couldn't figure out what this is. The problem is, so another thing, I changed to alignment now. Before I had those randomized kernels. Now I have the alignment kernels. I couldn't do that before because I need the new linker, the Selang linker. And we hadn't that before. So I can do it now. And you see that the broadness of the lines went down because the numbers are more exact. But every time when we have a change that affects the layout of the kernel, although we align it, like adding a driver, then we have something like this. Or we have something like this.  And I couldn't figure out what it is. And here also it goes down, down, down. If it's one going up and down, then it's quite easy to say, okay, what's that? But if it's going down slowly, it's really hard to say what it is. So working on, we figured out that the kernel did not use the checksum offloading feature of the driver because it was just disabled in the driver. We enabled it. It was the IX driver. And then performance went up. I haven't figured out what this is, this, and this because I finished this measurement last week and didn't do the drill down yet. So to figure out those things that happen, I showed you the click before. You can click on the column and then you find the CVS log. I take everything from CVS and put it in a nice HTML page. So you can just scroll through it. And here you can click. That's the link into the CVS web of OpenBSD. So you can figure out what was between here and there. So now I have something about UDP. That's the slides I could skip if I'm too slow. So we have five minutes. Okay, we do it. So I started doing UDP performance tests. Basically, I do it from 6.5. I did it with IPerf before and it was just a constant line. Not very interesting and I wanted to figure out why. All the releases before it had only this measurement. That's the IPerf measurement. And I saw it and then here we added MDS mitigation. That's a machine that has an old CPU without new firmware. So MDS mitigation from Intel without Intel firmware drops the performance. That's expected. And then I think Katennis committed a time counter change. That means that we changed the way how we measure time in the kernel and they are dropped. And it has more or less nothing to do with UDP. And here we changed time counter, the time counting again in the kernel. That's pure off this change and went up again. Here we have the checksum fix. That's also expected that it gets faster. And so what I wanted to know, how does this time counting affect our graphs? And I did those IPerf tests with different time counters. That's TSC. That's the CPU hardware time counter. That's the fastest. Then here are some other ACPI counters. Get slower. And some very old Intel counter. So we have very poor performance. But it has nothing to do with UDP. So I checked what does IPerf do when it does UDP. For every UDP packet it is sending. It was one write for the TCP. Then it has two time of get of day. One select system call. And another two get time of day system call. So basically what IPerf minus U is measuring is the speed of your get time of day system call. And the Linux guys don't get it because they have mapped that in memory and it's very fast for them. Okay. Now I went back and said, okay, let's write the tool myself. And I wrote a tool that doesn't do get of time of day while it's measuring. It's only doing some alarm timer to get informed when the measurement is over. So it's all done in the signal handler without system calls.  They are more or less the same except that you can't see the changes in the small packets because of the scaling. So here we have the TX mitigation. And for UDP it gets slower because packets are delayed. And that means that you have bursts. And the bursts especially is bad when you try to measure UDP. But for UDP it gets fast. For UDP it gets slower. Here you have the MDS. Yeah, of course. That also affects the write and send and receive system call. Don't know what that is. Going up and down. Here we have the tech checksum. Check some fix. Performance goes up. Perfect. And those time counters don't affect our performance anymore. So what's the conclusion?  It's really complicated and you see things you don't understand.  You see effects that you understand even less. Reproducing your numbers is hard. So it's not an easy job to get the same number when you do the same measurement twice. Don't trust your numbers. Look at this iPerf tool. It set me for two or three releases, your numbers are perfectly constant at one gigabit. And I never know how does it measure one gigabit.  The more complexity you add, I have no switch in there. It's just a cable between two machines. And it's just two machines with the same software and sending packets from one machine to the other one through a single cable. So what can be done additionally? I have not done forwarding, it's just measuring the stack, sending from one machine and receiving on the other one. I could add some Linux client server. I have the hardware standing there, but I have to figure out how to do a sensible measurement. So I have a constant source or drain of packets. I can't test patches. The framework doesn't provide that. I only measure committed things. And if somebody sends a patch, I want to test that. Somehow, automatically, I can measure historic releases. How was the performance at OpenBSD 4.0, for example. And file system performance. I have a test there, but it doesn't work very well because the controller I have sucks with the hardware and some problems. So I have to say thank you for Jan Klempel, who is administrating all the machines and keeps them running. So Moritz Buhl, he's not sitting in my talk, he went with the other talk. He did. I say thank you anyway. So he did all those GNUplot visualization and also helped keeping the machine running. My employer is Ginoa. They pay for the rack space and work time. So I have put everything online here, those links. You can get those results, those slides. And here's all the test data in a text file suitable for GNUplot. I've put all my performance and regression testing in the GitHub project. It's here. Here's the code from Jan Klempel to set up to make those auto installs and the auto configuration of machines. And this here is my talk on GitHub. That's how it looks like. Thank you. We have time for a couple of fast questions. Go there. Two questions about the tools. Why do you use IPERV and not TCP bench, which is in base and supports UDP as well? So I do TCP bench for TCP. So I have those differently colored numbers. Those are the reds and the yellow ones and the green ones. There's IPERV and TCP intermixed and they give the same results for TCP. For TCP bench minus U, I have the problem that I cannot measure how many packets I received in an automatic way. So I have two tools running and the one says me, okay, I'm sending this much. And the other one prints, now I receive zero. Then I get some packets and then zero again. So I decided to write my own tool that's called UDP bench that is setting up the receiving side with an SSH connection and sending the packets here, receiving there, collecting both results and publishing both. So TCP bench for UDP is not very suitable for automatic testing. And the other question is, I once did performance testing where I used, well, one of the device under test, right, the OpenBSD box in a second machine where I used, and there's an bootable net map image, this freeBSD net map thing. And you can just put it on USB booted and then it works in a way that it basically puts packets directly on the network interface ring. And then I had a dual port card. So one card was set up to send and it can also measure the packet it receives. So that basically allows you to use a dual port IX in a server with this net map image. It's freeBSD, but it's just for testing. Yeah, it's okay. And then you can generate wire speed traffic and measure the return. And the OpenBSD box in the middle just has to forward this because I always have the problem that the tools to generate that much UDP traffic are not really fast enough to send or receive it. For a revert situation you get wire speed from the outside. What you describe is the correct setup for doing forwarding tests. But what I wanted to test is the TCP stack. So I have to have a real TCP connection. And I just wanted to see how it does sending and receiving from the same machine work. For example, for UDP, I think the problem is that the system call we have can only send one packet per system call. That's why this UDP numbers are so slow. So it depends what you want to measure. I would say for forwarding a setup like you described would be better. It can be done. That's the reason why there's this Linux box in this picture, but I haven't set it up. But for measuring the stack, you have to go through your stack anyway. And if you go it on both sides with OpenBSD, it's just a problem that you can't see if it's sending or receiving side causing the problems. Okay, thank you. But of course, there's a lot of room for improvement. And I can do historical things. I can say, okay, run from 6.2 to 6.3 again with its new test. That's also an advantage. I can think of a test in the afterwards and say, okay, now let's put the test to the past and see what happened there. Thank you, Alexander. Thank you very much.


by some 900 miles, and about a thousand miles east of Sydney, Australia lies New Caledonia, a small rich tropical island just south of the equator, 248 miles long, and so narrow that from its mountain peaks both sides of the island are clearly visible. For years the French colonial government enjoyed New Caledonia's rich exports. Today, not Vichy France, but a United Nations ally fighting France is in possession of the island and here their troops are greeting the arrival of an AEF in Nunea, the island's capital. The first American troops ever to set foot in New Caledonia, a trim fighting force of trained soldiers parading under their stars and stripes deep in the South Pacific, scouts in French uniform, and the fighting French themselves, unlike their native country still in uniform, and fighting shoulder to shoulder with the recently arrived Americans, to whom today they've turned out to pay tribute. For the ceremonies end, the allied troops parade together past the reviewing stand where flags of the United States and the cross of fighting France hang side by side. Then off to work, deep into the narrow island near the native village of La Porte, the Americans hold a motorized review of a new kind of striking force, a peep troop squadron, organized by task force commanders to answer defense problems peculiar to New Caledonia. In an island a few roads, deep jungles and high hills, the tiny quarter ton vehicle has repeatedly proven itself ideal for problems of quick defense and attack. Performing duties usually assigned to cavalry units, this trim and speedy unit of motorized infantry is designated to hit the enemy in whatever section of the island he may land, and hold him until other troops can get there. Before their commanding officer Lieutenant Colonel A. M. George, the troops draw up in full formation, and then the completely motorized squadron passes before him in review. Organized primarily for combat reconnaissance, the mobile peep troop squadron is equipped with most of the features of an infantry unit. Completely motorized, there's a light and heavy mortar section, machine gun section, its own reconnaissance unit, and towed behind the little cars, 37 millimeter anti-tank cannon, all designed to give the unit striking power as well as the speed and maneuverability provided by the peeps themselves. A machine gun platoon raced in a quick assembly of light 30 caliber machine guns, dismounted from the peeps and mounted onto tripods in less than 30 seconds. Execution of the unusual tactical problems of the peep troops trains the various sections to navigate about the island, learning to cover any section speedily. From a peep reconnaissance patrol to a command position comes the word, jet landing in force, and the specific section of the island being theoretically invaded. The operator of the portable radio hands the message to the commander, who, summoning a native Kanaka, repeats it in French. This native soldier will serve as a guide for the peep troops through the jungle. At the same time an aide relays the message to staff headquarters by phone, dispatching a motorcyclist to rouse the bewacking troops. Hurt and ready for action, it's no time at all before the squadron of tiny cars has emerged from its concealment in the bamboo rushes, maneuvering the rough ground with ease and churness, and then speedily off to the mock battle area. In advance reconnaissance motorcycle scouts cross into a ravine and sensing possible enemy crossfire skid their bikes into a spill, poking out their Tommy guns, and behind them a reconnaissance unit furthers the protecting action with a light 30, while above them the roaring parade of peeps passes on its way to its military destination. The enemy supposedly has made his landing, a mortar squad sets up its mortars to blast the enemy off the island. They're quick and efficient. This is training for what may come, but these are the spots where the real thing may take place any day. If and when the enemy comes, these mobile troops are going to be the first to meet and repel him, and accidents like these will put valuable men and equipment out of action. Today it's just training for the speedy medical section, carefully practicing to lift the wounded on to their ambular peak and take them to field hospitals. The island's jungle fastness go the troops, daily familiarizing themselves more and more with the island's landmarks and learning how to get around the scant rail like road. Their problem is to attack the position taken by the enemy who today is make believe. Across the river just ahead, the enemy has taken a strong position from which he must be driven. These troops are advanced guard of the island's defenses and must knock him back or hold him tight until the slower reinforcements can come up. Within range of the enemy, 37s go into action behind low-lying palms. Quick, prearranged battle formation for maximum firing power and cover until the reinforcements arrive with heavier guns and equipment. And to cover their defenses, a dense smoke screen is set up hiding the advance. Behind them in a shallow place, a flanking movement to surprise the imaginary enemy's rear forges across the shallow island stream, meeting simulated resistance from scattered enemy fire. But on may go, race across the stream with the regulars to aid them in scouting the terrain. And behind come the first reinforcements to arrive. Machine gun squad to set up on the shore and cover the advance of the reinforcements arriving in increasing numbers. Successfully, the mythical enemy is forced back, destroyed, in action which these troops are going to perfect so that when the jab comes, he's going to be blown right back where he came from. It's time for relaxation. And troopers in the village of Lafoye are witness to an unusual scene, the presentation of a handmade U.S. flag by Madame Benus, proprietress of the local hotel. Lieutenant Colonel George expresses his appreciation and his friendship in the traditional French salute. The tiny native village, which the French have named St. Louis, plays host to the American soldiers in a most unusual fashion. They are dressed in their traditional Kanoka grass skirts, but some of them are adorned with undershirts donated by the soldiers and the past exciting rhythms of their native dances treat the Americans to an unusual exhibition.


Listen son, this is gonna sound weird, but your name might actually not be Jessica. Parents of identical twins, how sure are you that you never accidentally switched them around and raised them under the wrong names? I know a set of twins whose parents switched their names permanently on purpose. After giving the twins their names at the hospital, their mom and dad brought them home and decided their individual personalities actually suited the opposite name. So their parents just switched their names, didn't have to do any paperwork. It's amazing, now that the twins are fully grown, in their late 20s now, their personalities are still so opposite, artist versus banker, and their names suit them both absolutely perfectly. Also, it's a great story now that they tell everyone, which is, very cute. Parent of twins here. When they were first born in the hospital, literally a few hours old, they were in little cots with their name tags above their heads. Someone opened a door too fast and the breeze knocked both tags to the ground. I picked the tags up and couldn't remember which was which so, I just guessed. No one else needs to know. Especially not their mother. I used to babysit these twins. Their mom always dressed them in the same exact outfit, except for the color of their socks. Well, when they were one year old, they loved taking their shoes and socks off. I mixed them up plenty of times. I used to call their names over and over to see which one responded to the name. They both looked identical. The first few times it happened, I let the parents know, but they were aware of it and didn't make a big deal out of it. So then I just put the socks on whichever I thought was right. Then I started putting a washable marker line on one of their feet, and that's how I differentiated them. I'm pretty sure their mom knew who was who, because she'd always tell me which was which when I came over. When I started drawing the line, she told me this is Peter and this is Tommy. I always drew the line on Peter. And I remember once she came in and said something about Peter singing, but it was the one she had told me was Tommy earlier. When I corrected her, she was just like, geez, can't tell them apart. And that was the end of it. Father of identical twin boys here. The day after their birth, the boys were sleeping in a hospital cot designed for twins. The cot itself lay on a slight incline to ensure that the baby's heads were kept slightly elevated. This, unfortunately, caused both the boys' hospital tags to slide off their skinny little legs during the night and land at the bottom of the cot. If I hadn't taken a photo of the boys the night before and written their names on the picture, we would have never known exactly who was who. Bullet dodged. Have twins, now four years old. When they were newborns, before we were able to set up a system to feed both at the same time during overnight feedings, we would hold them one at a time with a bottle in hand. Feedings would take 45 minutes to an hour sometimes. Anyway, in my sleep deprived stupor, I fed one kid, put him down, grabbed the other bottle and forgot which kid I had fed. Pretty sure one kid got fed twice a couple times while the other did not eat. I read something once where a father asked advice about getting one baby tattooed to tell them apart, but they were still tiny infants. One had a very serious heart condition and one didn't. If the one with the condition missed his meds it could kill him. If the one that didn't have the condition was given the meds, he could actually die too. He was asking for advice because they had spent a significant time in the ER recently, when the meds were accidentally given to the wrong baby. They had tried everything, bracelets, painting toes, and lots of other stuff according to him, but they were terrified of mixing them up again, especially since the accidental medication almost killed the baby. I just remember everyone calling him a monster and me being all for it. He even wanted it brown, so they could just make it look like a freckle to keep both babies healthy and alive. I don't have twins, but I'm a midwife. Medication errors in twins is one of my biggest fears. I work in a pharmacy and we had a prescription come in for a Brianna last name. We only had a profile for Gianna last name. Same date of birth, same address, and the names sound similar so we thought maybe the office got the name wrong. So we fill it under Gianna and put a lock on it to clarify when the patient comes in. But not long after we complete it, we get a phone call from a girl asking if there was a prescription there for Brianna last name. We explain the situation, clarify that her name is Brianna and not Gianna, and that maybe someone misheard her somewhere. Oh, that's my sister, she says. Duh, wins. But we'd have gone with Brianna and Gianna but whatever. Actually, we're triplets. Lo and behold, third sister's name is Alanna. Brianna, Gianna, and Alanna. Triplets. I feel like you're just asking for a medical error by naming them so similarly. All the metrics that are usually used, to tell people apart, are useless with twins, at least make their names distinct. I know someone with identical triplets. She said this was her absolute biggest, all consuming fear. They kept the hospital bands on as long as possible, and then used colored sharpies. They also kept one of each baby's feet color-coded. The third baby has always been considerably smaller though, so she is easy to tell apart, she got less placenta or something. The other two though are completely interchangeable. She said they did the color-coding thing for the first few years, until the kids knew who they were and could tell each other apart. A friend and I, were telling each other stories, and he said he was one of identical twins but he lost his sibling. His family was caught in a Balkan snowstorm, when he was a baby and one of them died, and he has no idea if he is named as himself or as his brother.  Thank you for watching Royal AI. Be sure to subscribe and hit the notification bell to receive future episodes. Share your experience in the comments, or tell us what you think of these stories.


Currently, there are 8,000-5,000 species of fungi described in literature. 9,000 of them can produce mushrooms. But only 71 of the mushroom-forming fungi can do this. Bioluminescence is the emission of cold and visible light by living being. It's a widespread phenomenon in nature. Although fungi bioluminescence has been first described by Aristotle in the 4th century BC, bioluminescent fungi still remain unknown for the most of people. In this talk, I will tell you a little bit about our work studying this incredible phenomenon. First, some information about fungi. The fungi I'm talking about live on the soil of the forest. It consists in a structure called mycelium. Mycelium has this spider web appearance. Under certain conditions of temperature, acidity, moisture, and nutrients, some fungi can produce mushrooms. Under the gills are produced spores that can initiate a new mycelium. In analogy to a plant, the mycelium is the tree and the mushroom is the fruit. These 71 species can be found all over the world. We can find a third of them in the whole Americas. Our group was responsible to find 20% of all the species described nowadays. Our work began in 2002 collecting mushrooms in the Atlantic forest in the state of São Paulo, in the Parque Estadual Turístico do Alto Ribeira. Then this year we start collecting in another biome in North Brazil, in Matadus Cocais. We collect it during the day and during the night. This is the mycelium of one of the species we have in our lab. As you can see, the mycelium can also emit light. We can find the same mycelium in the forest on rotting logs, seeds, and other kind of rotting material. This is the first species we found in Brazil on the Mavigilusens. As you can see, the light comes from the gills. In the case of mycinosterone, the light comes from the same place. Mycena fira emits light from the whole mushroom. This species is fantastic. Mycena luxeterna was awarded one of the top 10 new species in 2011. It was chosen among more than 10,000 species described that year. Nenotopanus garnari was first described by Garner in 1840 and reclassified by us last year. It's one of the brightest species in the world. It grows on the base of palms, mainly Babassu palms, in the north Brazil, in the state of PoE. The main goal of our research is to discover new species, to study the biochemical mechanism involved in light emission, to identify the genes and enzymes involved. They use the mycelium as an environmental toxicological assay and to study the functions of bioluminescence in nature. I want to give you an example of what we've been doing to study the functions of bioluminescence. There are some hypotheses to explain why do fungi emit light. One of them is to attract fungivores to sparse spores. The light that comes from the mushroom can attract an insect. When the insect lay eggs on the mushroom, some spores can drop on the insect. When the insect flies away, it can carry the spores and initiate a new mycelium far away from the original mushroom. The other possibility is as a warning signal, like, don't eat me, I'm poisonous. Personally, we believe in the first hypothesis. In order to prove this, we produced some fake mushrooms using resin, acrylic resin, and a green-led lamp. We produced two kinds of mushrooms because we have two different locations, and we left them in the forest. We put some glue on the surface in order to capture some insect attract by the light. This is the initial experiment. We were able to capture some beetles, flies, and crickets. This is the ongoing experiment in our group. We hope in the future we can contribute to elucidate some functions in fungal bioluminescence. I hope you have enjoyed. Thank you.


Hey guys, this is Rich here on behalf of RichTVLive and I have some breaking news regarding Namaste. Namaste announces filing of final prospectus and enters into amended and restated underwriting agreement. This is broken in Vancouver, British Columbia, Global Newswire, Namaste Technologies, Inc., Namaste or the company on the symbol N on the TSX Venture Exchange M5BQ in Frankfurt and NXTTF in America is pleased to announce that it has filed a final short form prospectus in connection with its bought deal offering of 15 million units of the company at $3 per unit. Now remember, Namaste right now is trading at much lower than that people, so this could be a very good sign if we take a look at the price of Namaste right now, we will see it is currently trading at, let's just pull this one up, NXTTF in America, currently trading at $169 and it's even down post market to $167, N, let's just say CN or NV, N.TO. There we go, N.VN, N.VN is $2.22, so let's just think about this clearly. Why would you invest 15 million units at $3 unless you really believed it was going to go well above that? I think this is a very good sign for investors, I think this is signaling that this is a stock that will go much higher than $3, otherwise why would a funder invest at $3, 15 million unless they believed it was going to go much higher? Previously announced on September 26, 2018, the prospectus has been filed in each of the provinces of Canada other than Quebec. The company and the underwriters have also entered into an amendment and restated underwriting agreement amending the terms of the warrants issuable in connection with the unit and pursuant to the exercise of the underwriters' compensation options, such that the units will be compromised of three quarters of one common share purchase warrant from one half. Each whole warrant will be exercisable at $3.15 per common share from $3.50 and each warrant will be exercisable for a period of 60 months from 48 months. Closing of the offering is scheduled on or about October 25, 2018. The offering is subject to the issuance of a final receipt by the applicable securities regulatory authorities and TSX-V Venture Exchange final acceptance of requisite regulatory filings. Let's just learn a little bit about Namaste Technologies Inc. Namaste Technologies is your everything cannabis store. Love this company, trademarked. Namaste operates the largest global cannabis e-commerce platform with over 30 websites in 20-plus countries under various brands. Namaste's products offering through its subsidiaries include vaporizers, glassware, accessories, CBD products, you know your boy loves CBDs, and medical cannabis through its wholly owned subsidiary, CanMart in the Canadian market. Namaste has developed and acquired innovative technology platforms including NamasteMD.com and in May 2018, the company acquired a leading e-commerce, AI and machine learning company, Find-A-Fee, A-B. Find-A-Fi uses artificial intelligence algorithms to optimize and personalize a consumer's on-site buying experience. Namaste is focused on leveraging its cutting-edge technology to enhance the user experience throughout its platforms. Namaste will continue to develop and acquire innovative technologies which will provide the value to the company and to its shareholders as well as to the broader cannabis market. If you think about this news, holler at your boy, comment down below, do you like this? If you do, smash the like button. If you haven't subscribed, subscribe for more updates. Go to RichDB Live, your everything, news, updates, CBDs and entertainment platform absolutely free, hover over news, find all the news you need absolutely free, hover over stocks, get all the same tools I use every day absolutely free, cryptos, contact. If you want to find our secret groups, join the top three groups right here and follow us on all social media platforms absolutely free. It's true. What do you think about this news? Now remember, RichDB Live is strictly for education, entertainment purposes.  If you're not winning, you're not watching. We bring you the winners and we bring them to you first. I love this company up 60% in the last month, 73% in the last three months and 1000% in the last year. It's true. And now people are investing money at three bucks. I think it's going to go way higher. You heard it here first from your boy, Rich. I'm out. What do you think about this news? Comment down below, smash that like button and share it everywhere. Have a nice weekend. Peace.


As Gayatri's partner in this journey, it was very obvious for me that I had a supportive role. I still continue to have that supportive role in many ways. Most of the times it was something as simple as sitting next to her holding her hand and saying look I'm here for you. The pain will go away and our quality of life is going to improve for the better. On some days it might just be as simple as putting some oil on her back and trying to relieve those sore muscles that she was exercising so hard. On other days it could be something as simplistic as what can I do around the house which is going to take the load off your shoulders. And to Gayatri's credit she got back on her feet so quickly that it was almost scary to see the amount of effort that she had set out as a goal for herself to be able to come back to a normal life. The amount of will, the amount of focus, the amount of effort that Gayatri has put into this entire recovery process was just about brilliant and amazing. She is having the very high mental power as well as very high will power. She is the main engine for my family so as she is not well so our family means our train also it will not work out. She has always been a fighter wherein I'm a good friend of hers being a husband as well but what I see and I learn from her is she always fights for any kind of issue, any trouble in life. She has always been a fighter and she has that instinctive intrinsic value of fighting through any difficulties in life including the cancer she had and it's not easy to overcome those things but I saw after surgery of 11 hours the very next morning she was trying to talk, she was trying to move and all that was almost like I can't believe that somebody can have that intrinsic value in the body and mentally they can be so strong to come out of it so soon. I know Sunita from childhood we did schoolings together. I'm very much impressed with her energy, the boldness, the confidence which she had and after years meeting her after the accident it really shattered me a lot such a confident woman facing this accident you know the way she faced it was like another amazing thing about her she faced it so boldly confidently we were worried but she is strong enough to console us so that's how a woman was supposed to be.


This is the 32nd year that the ACT Motorcycle Riders Association has been running its annual toy run. For the first time we have a large contingent of officers from the Department of Immigration and Citizenship participating on various types of motorcycles. So I've personally been involved in this toy run for probably about 10 years now. The difference is this year we're doing it through work and it's an opportunity for a bunch of us in the Department who haven't ridden together before to come together for a good cause. So it's quite exciting and we're pretty keen to donate gifts to the charity. I'm taking my two eldest grandchildren shopping with me on Friday evening and they're going to choose a present each and then I shall also choose something for an elder child as well so I shall take three with me. I've ridden in the toy run for eight to ten years, been a motorcyclist since I was four so I won't tell you how many years that is. And the thing I think I'm looking forward most is the like-minded individuals that really get to talk to one another during work, we've now discovered we've got a common interest and that's both riding motorcycles and also supporting a worthwhile charity, knowing that we're a department that cares whether it's through what we do officially but also the widespread community activities of our staff. It's just another way to get that recognised and it's just a good feeling.


This 2017 Chevy Silverado 2500 Crew Cab Long Box is stock number 12008Z. We are here at Summit Automotive in Fond du Lac, Wisconsin, your new and used heavy duty truck headquarters. This 2017 Chevy Silverado 2500 has the 6.6 liter Duramax diesel with the L5P motor which pumps out 445 horsepower. This truck has been fully safety and inspected by our service shop for the state of Wisconsin inspection process, has a fresh oil and filter change, all the fluids have been checked and topped off and this truck is 100% ready to go. Summit White is the color, we shoot all of our videos in 1080p, 60 frames per second so if you have HD capabilities on your computer tablet, smartphone or television turn them on right now because it is definitely your best way to check out the quality and condition of the truck before seeing it in person. And if you like the video and want to subscribe to our YouTube channel in the lower right hand part of the screen is a subscribe button, click that and then click the bell notifications to get updated every day we do videos here of our amazing new and used inventory at Summit Auto. This one comes with the 20 inch painted polished aluminum, hostile rims, it has really nice set of Nitto Terra Grappler G2 tires, these are LT29560R20s and they have probably about 70 to 80% of the tread left on them. Front fender is in excellent shape, I didn't see any major dents or dings on there. Comes with the projector lamp headlamps, front bumper is in excellent shape, no major dents or dings on there, looks really good and the lower valance is in nice condition as well. You do get those tow hooks there, chrome trimmed grille, headlight lenses are nice and clear and it comes with the coal induction hood, this is a true coal hood that is functional. On the Duramaxes they are all functional. Didn't see any dents or dings on the hood, passenger side front fender looks pretty good as well, maybe one tiny little ding on the fender there but nothing too bad. Other side front rim is in excellent shape as well, no scuffs or scrapes and as you go down this side of the truck, take note of how clean the body is, how reflective and mirror like that paint is. We take these HD videos so if you are far away or even if you're close by and just cannot make the trip down but you're still interested in purchasing the vehicle, you can see the truck, hear the truck and have confidence in what you're looking at before you even get here so that when you do get here there's absolutely no surprises and you can make a smart and informed decision from the comfort of your own home. Very clean down this side of the truck, this back rim is in excellent shape as well, no major scuffs or scrapes and the back tires have just as much tried as the front tires. Frame and underbody other than just a little bit of surface rust on there is in really nice condition, it's pretty common on these GM's if they've seen any sort of winter, they're going to look like that, has all the remaining factory exhaust and the lower rockers all look really good on this truck, I didn't see any corrosion on them. Bed rail covers coming around to the back, rear bumper is in nice shape, no major dense ordings on there, it does have the rear bumper parking sensors, tailgate is in excellent condition as well, no denser things on there, it has the shock down assist tailgate and it has a very nice pender liner drop in bed liner, that shuts nice and solidly and as you go down the driver's side just as clean as that passenger side, I didn't see any dents, I didn't see any dings in the box, looks really good for full disclosure this back rim is in excellent shape as well and the driver's side doors look really good too, power mirrors with the driver's side blind spot mirror, inside the LT1 package gives you the black cloth interior, no rips, no tears on the seats, they are in really nice shape, power driver's seat, factory all-weather floor mats throughout on this truck, auto headlamps turned out full-wheel drive, tilt steering wheel and factory brake controller, power windows, power locks and power mirrors, we'll hop inside take a look at the ignition and the radio and then check out the back seats and then under the hood, so we don't fill the diesel exhaust fluids because that stuff can go bad, it's got a shelf life so at delivery we fill those so that's why that light was on that warning signal, 27,638 miles digital speedometer outside our compass display I should say and the instrument cluster is very nice and clean, comes with the leather wrapped steering wheel, Bluetooth and information center controls on the right cruise controls on the left and it does have audio controls on the back of the steering wheel comes with the Allison six-speed automatic transmission with the optional tap shift and it does have the Chevy my link radio AM FM and Sirius XM radio capabilities on here it does have a CD player as well and you do have a home screen and you have projection on there so while this one doesn't have the factory navigation system on it you can project your cell phone to there via Android Auto or Apple CarPlay and then have nav right on the screen so it's like you have nav right on the screen it's really a cool system down here is your CD player climate controls including your heated mirrors button stability control that's for your cargo lamps and your factory exhaust brake you do get a 12 volt power point down there carpeting and floor mat on the passenger side are in excellent shape passenger side seat no rips or tears on there and the headliner looks really good on this truck I don't think this truck's ever been smoked in smells very clean inside you do get map lights up there and on-star and SOS capabilities in their review mirror we'll take a quick look at the back seats and then we will start it up and check out under the hood back seats are just as clean as front seats no rips or tears back here does have the latch child safety system for any child car seats you may have fixed glass rear window these seats do fold up for extra storage you can see the carpetings in really nice shape back here and it does have those all-weather floor mats back here as well bottoms of the doors look pretty good and we'll start it up and take a look under the hood starts right up no check engine lights or anything like that and I would personally like to thank you for checking out the video today and hopefully from this HD video you will be able to tell just how clean this truck is all the way around inside and out there those projector lamp headlamps under the hood we have the 6.6 liter Duramax diesel with the L5P motor 445 horsepower engine base very clean runs very smooth once again this truck has been fully safe and inspected by our service shop for the state of wisconsin inspection process has a fresh oil and filter change all the food's been checked and topped off and this truck is 100 percent ready to go there's your emission sticker there's your cowl hood that's where the air comes down into the air intake right there like I said this truck's 100 percent ready to go I would highly recommend it from a quality and condition standpoint and to see more pictures of this truck or one of our other 450 new and used cars trucks scvs minivans wranglers half tons three quarter tons one tons you name it we got to go to that website right there www.summitauto.com full pictures and descriptions of every single vehicle from two locations all at summitauto.com and if you like to check out more hd videos you can go to youtube.com slash summit auto remember to like subscribe share click the bell notifications on this video and all the videos that you see on there in fact in a second you will see a link to subscribe to our youtube channel the upper left a link to more Chevy 2500 truck videos like this one in the upper right a link to this vehicle on our website in the lower left and a link to one of our latest youtube videos in the lower right click those check us out and we're super excited to help you with this ultra clean 2017 Chevy Silverado 2500 crew cab long box LT1 in summit white crew coat thanks again and remember to like subscribe and share


I want to wish all Pennsylvanians a very happy Labor Day. This is Governor Tom Wolf and this Labor Day is really special. As I think most of you know, a lot of wine and spirit shops will be staying open on Sunday before Labor Day, actually 307 of them, 145 of them by Labor Day. Sunday we'll have lottery ticket sales potential and over 300 grocery stores and convenience stores will be selling wine and beer. So great weekend coming up and there's a lot of opportunities for you to have a good time. Happy Labor Day.


This study investigated the potential of three plant extracts, olive leaf, chamomile flower, and red tomato fruit, to synthesize zinc oxide nanoparticles, ZNONPs. The results showed that the synthesized ZNONPs exhibited a distinct size distribution and possessed antimicrobial activity against Sanfamona's ORIZPV. ORIZI, ZOO, STRENG GZ0003. Furthermore, the bacteria's cell membrane, biofilm formation, and swimming motility were also affected by the ZNONPs. These findings suggest that the synthesized ZNONPs could be used as effective bio-control agents for combating bacterial leaf blight diseases of rice. This article was authored by Solobomio Leitanogonimi, Yasmin Abdullah, Muchin Zhong, and others.


Migrants with citizenship are not allowed to leave Russia. Russia involves migrants in military operations in Ukraine. For example, fear of a fresh military mobilization by Moscow to support its war in Ukraine has prompted many Kyrgyz workers in Russia to return to their home country. But some of the workers who have got Russian passports and are eligible for the military draft say they have been prevented from leaving Russia in recent weeks. Bekbolat, a Kyrgyz man who became a Russian citizen several years ago, said he was stopped by Russian border guards on December 22, 2022 when he tried to cross into Kazakhstan en route to Bishkek, the capital of Kyrgyzstan. Russian border guards explained to me quite politely that you are included in a mobilization list. This is the law and you have no right to go abroad until February 12. Bekbolat told Kyrgyz Service of Radio Liberty without elaborating on why the February date was given. The Moscow-based worker who didn't want to give his full name doesn't rule out that he will be forced to go to fight in Ukraine for Russian forces that launched a full-scale invasion on February 24. Bekbolat said some of his Kyrgyz acquaintances, also naturalized Russian citizens, had received summons for recruitment centers after Moscow announced a military mobilization on September 21, 2022. According to Bekbolat, several Kyrgyz men close to 60 years old were sent to Ukraine despite their age. Bekbolat said he had been summoned to his local recruitment office in Moscow recently but didn't give an exact date. He said he was released after an interview and with a warning, desertion from the armed forces would be strongly punished. They made it very clear. They told me any Russian citizen who left Russia after the September 2022 mobilization and those who are leaving now would face severe consequences. Bekbolat said Moscow has denied it is planning another military draft but intelligence officials and experts in Ukraine and Russia have predicted that another call-up could happen soon. It has sparked anxiety among Central Asians in Russia, both Russian passport holders and those who live and work there with temporary residency permits. Adding to their fears, the chief of Russia's investigative committee, Alexander Bastrykin, recently said neutralized citizens must participate in Moscow's war in Ukraine. In an interview to Russian media, Bastrykin said some 550,000 people from Kyrgyzstan, Tajikistan and Uzbekistan have obtained Russian passports in the past five years. In the first half of 2022 alone, more than 60,000 adults from these three countries received Russian citizenship, he said. They now have an obligation to defend the country, Bastrykin added. He also said Russia must offer incentives such as a simplified Russian citizenship procedure to other migrants to attract them to take part in what Moscow calls a special military operation in Ukraine. There have been many reports that non-citizen migrants and even prisoners from Central Asia were sent to Ukraine. Some to fight among the Russian forces as contractors, others to workers' drivers or builders in Russian-occupied territories. Their number is not known. Russia hosts millions of migrant workers from Central Asia. Governments around the region have warned their citizens against taking part in foreign military conflicts.


Miners may not think much about this equipment during their shift. However, it becomes very important when an emergency occurs. Being on a mine rescue team, we had to go into a mine that was on fire. And the people that came out of the mine before we had arrived, it saved their lives. If you learn how to use the unit, properly dawned and properly maintained, it will save your life in a mine emergency. This is an M20 self-contained self-rescuer SCSR. It is designed to be worn on the belt on a daily basis. If you ever need to escape from your mine through unbreathable air, the M20 will supply about 1.5 liters of oxygen per minute. It is rated for 10 minutes of use for escape. It can be a lifesaver. However, it must be cared for and maintained daily. The inspection care and use of the Osinko Incorporated M20 self-contained self-rescuer. First, we'll emphasize some of the M20 features. We'll show you step by step how to thoroughly inspect the unit before you take it into your workplace. We will show you examples of units showing signs of normal wear and tear compared to those with evidence of excessive wear and tear. This will help you make thorough daily inspections, which are vitally important to ensure that your SCSR will work properly when needed. Finally, we will review proper donning techniques with you and show you what it is like to wear the SCSR in an evacuation exercise. Therefore, you will want to watch closely while we show you training aids in the care and use of this life-saving apparatus. It may be one of the most important lessons in your life. While you are using the M20 in a life-saving scenario, oxygen continuously flows from the cylinder to the breathing bag, starting when the breathing assembly is pulled from the base. During inhalation, oxygen is pulled from the bag through the scrubber and into the mouthpiece. During exhalation, carbon dioxide laden air is exhaled into the mouthpiece through the scrubber and into the breathing bag. Sometimes during low work rates, the oxygen regulator will supply more oxygen than the user can consume and excess gas exits the relief valve. The starting of the oxygen flow, the increased flow rate during high work rates and the occasional exhausting of gas through the relief valve all occur automatically. The user needs only to breathe. The M20, this escape device, was surprising. Not only was it easy to dawn, but the air in which it was flowing was just like breathing normally as they stand here. The device within the first couple of minutes starts to generate some heat. The heat increased slightly within the first five minutes. It never got any hotter after that point in time. It just felt like normal breathing. The air becomes moist, warm, but nothing that interfered with the operation, nor did it interfere with me breathing through the device. The M20 is a one-time use device. After use, it may be returned to a synco for refurbishment or disposed of in accordance with local regulations. The recommended storage temperature range of the M20 is 10 degrees Fahrenheit to 140 degrees Fahrenheit. If the M20 is exposed to temperature extremes, inspect the unit to ensure that the cylinder pressure gauge is in the green at 70 degrees Fahrenheit. If escape is necessary, don the device regardless of temperature. The M20 is designed to be carried on the belt on a daily basis. If it is carried daily, it should be inspected daily. OSENCO Incorporated recommends inspecting the M20 before each shift. In addition to the daily inspection, a 90-day inspection is still required if the unit is carried daily. If the M20 is stored according to an approved MSHA storage plan, it should be inspected every 90 days. The M20 is designed for a service life of 15 years if properly inspected and if the conditions of use are observed. Mandatory factory service is required after 10 years if stored and 5 years if the M20 is worn on the belt. Inspect the factory service date label on the base and remove the unit if past the mandatory factory service dates. Check the gauge. The pointed white indicator on the gauge is normally in the green at 70 degrees Fahrenheit, signifying full cylinder pressure. If the case is damaged and the gauge cannot be read, the unit must be removed from service. If the view through the clear base or gauge window is obstructed for any reason, such that a proper examination cannot be performed, the M20 must be removed from service. Inspect the apparatus for the indications of high force impacts. Any unit that has been misused should be removed from service immediately. Any suspect unit should be sent to the manufacturer for examination. Look now as we show conditions you should watch for. The case is cracked, burned, deformed, or excessively worn. There is an excessive gap between the cover and the base or the tamper indicating ball is missing. These are indications that the unit has been opened and re-closed. The latch or cover band is damaged. There are several dents or wear spots in the band or the band is out of position. The pressure gauge is bent or the white indicator needle is broken. There is dirt, debris, or moisture visible through the base or gauge window. The belt loops are broken. If any of these signs are present, the M20 must be removed from service and returned to Osinko Incorporated for servicing. Now, let us review. In a proper visual inspection, the case itself is first examined for damage. Is there excessive gap between the cover and the base? Is the tamper indicating ball missing? Is the latch or cover band damaged? Are there severe dents or worn areas in the band or is the band out of position? Is the pressure gauge bent or white indicator needle broken? Is any dirt, debris, or moisture visible through the base or gauge window? Are any belt loops broken? If any of these signs are present, the unit must be removed from service. The M20 is very rugged, but to ensure that it functions properly when used, avoid the following common abuses. Attempting to re-close the case after the M20 is accidentally opened, dropping the M20, particularly when taking off the belt, cleaning it with anything other than a soft brush, immersing the M20 in water. Even though the M20 has been tested to withstand immersion in water, it is not recommended on a regular basis. Sitting on the M20, dragging the M20 on the ground, placing it near heat greater than 140 degrees Fahrenheit, putting tape or stickers on the M20 that would impede its opening or reading the gauge. Don the M20 using the following six steps. First, release the yellow lever and discard the cover. Next, remove the breathing assembly by pulling the yellow neck strap upward. Then, insert the yellow mouthpiece. This is followed by fitting the yellow nose clip. After that, fit and adjust the yellow neck strap.  These six fundamental steps should be practiced numerous times by the trainees. To review, first, the worker released the yellow lever and discarded the cover. He removed the unit by pulling the yellow neck strap upward. Then, he inserted the yellow mouthpiece. Fit the yellow nose clip and adjusted the yellow neck strap. Finally, the worker breathed through his mouth and moved out of danger. Reminders while wearing. Never remove your mouthpiece. If warm air or resistance becomes uncomfortable, reduce your speed or work rate. Remember that breathing with the M20 differs from normal breathing. The temperature of the inhaled air will be slightly higher and there will be some breathing resistance. This is in no way harmful and never warrants removal of the mouthpiece until you are out of danger. Your SCSR cannot be expected to help you in an emergency if it has not been cared for and inspected properly. Or, if you do not know how to get it on and understand wearing and breathing through such an apparatus. The guy that I was working with, my body, he and I had just gone through the SCSR retraining class, that shift before he went into mine. So, it was still fresh in our mind how to put it on. So, we proceeded to put ours on and as you looked around, you could see other people were struggling with theirs. I do fully realize the importance of the SCSR. It's been proven many, many times and many times over and under actual fire conditions to save people's lives. Know the daily maintenance of your SCSR. Know how to wear it. How to use it. Know when to use it. It can save your life.


Did you know that there are some little known facts about the resurrection that many Christians, those professed Christians who say they read their Bible, that many of them do not even know about? Well, let me give you a couple of examples. The Bible tells us in John 1633, look what he says, these things I have spoken to you so that in me you may have peace in that the world you have tribulation, take courage, I have overcome the world. Now he's speaking of what he's going to do. Obviously, we know that's going to take place after his death, burial, and resurrection. Now let's think about this for a second. After his resurrection, what do we have proof of? We have proof that he can take on sin, defeat sin, and not only defeat sin, but defeat the power of sin and the penalty of sin, which is death. He destroys and defeats death. How do we know? Well, there's no one in the tomb. So he's been resurrected. What does that mean for us? And what are the facts that we can know and even rest on because of this resurrection? Now, it's vitally important that we remember what Paul said about the resurrection. In 1st Corinthians 1519, he says that if we have hoped in Christ in this life only, we are of all men most to be pity. In other words, if our hope is in Christ, but not just in this life only, but also in the afterlife, but it doesn't negate what's happening in this life. If we just read this in context, then if there is no resurrection, then we have nothing to look forward to. We have no hope we are to be pity, but we know that there is a resurrection. So what are some facts that we don't know about the resurrection? Well, think about what Jesus came for. Jesus says in Luke 418, says, the Spirit of the Lord is upon me because he has anointed me to preach the gospel to the poor. He has sent me to proclaim release to the captives and recovery of sight to the blind, to set free those who are oppressed. Now, did that happen? Well, before we look at did it happen, when it happened, let's also keep in mind what he says in John 836. He says, so if the Son makes you free, you will be free indeed. And isn't that what Jesus said in Luke 418, the reason why he came? So you may think that this is obvious what I'm stating, but it couldn't be obvious. Here's why. One of the little known facts about the resurrection is that you have been set free. I know there's a news flash for some people and they say that I know that. Well, it couldn't be because you mean to tell me that he has defeated the grave. The tomb is empty. There's no one there. As a matter of fact, there was a scheme concocted to state how the body was stolen. We know the body wasn't stolen because he showed up and he is now ascended into heaven. And so what does that mean that by being set free? Well, that means that if he can defeat the grave, he's also stated that he will defeat the other things that are in your life. Depression, oppression, whatever it is, the things that you want to hold on to, that people tell you that you still have to deal with, he has literally made you free. All you have to do is accept, in other words, trust in that. Walk in that. If you trust that he can do that, why can't you trust that he can deliver you from any addiction? That he can't deliver you from any wrath.  Why can't he deliver you from unforgiveness? Well, he can. The issue is you placing your faith in him.  And so, yes, it sounds a little strange to say that one of the little known facts is that we have defeated or we've overcome those things. It should be obvious, but it's not obvious. We're told in 1 John 2.13, I am writing you fathers because you know him who has been from the beginning. I am writing to you, young men, because you have overcome the evil one. And we're told also later in 1 John in chapter five that all of us who believe in what he's done, we have overcome the world. And the byproduct of that word comes from is our faith. The issue is we believe this, the greater thing, but we don't believe the lesser things. You mean to tell me he can defeat the one thing that no one has ever defeated? He defeats death. The great has no hold on him, but he can't defeat the one thing that we see people having victory in their lives every day. We see people overcoming things in their lives such as depression, anger, heartache, past abuse. We see that happening. We believe that he can overcome death in other people, but we don't believe, we believe that he can overcome death totally, but he can't overcome these things in our lives. And while for some people that might make sense in the head, and it's actually a well-known fact, no, make it a known fact in your heart. That way we won't have to say that this is a little known fact. It must not be a well-known fact because too many Christians are suffering from the facts that Jesus has literally made away for them to be set free from.


2022 has marked a changing pace for the global strategy. Targeting key capacity gaps at all levels, the three partners FAO, Paris21 and the Economic Commission for Africa have provided focused demand-driven support to 25 African countries, a significant shift from the preparatory phase of the past year. Paris21 is the keeping agricultural statistical units with the knowledge they need to hire, develop and retain skilled workforces. 2022 has seen the conclusion of a baseline study of HR policies in nine countries, the development of HR policies tailored to the agricultural sector, original peer-learning discussion and training events attended by 22 participants from 15 countries. Paris21 is also working with senior management on vital leadership and communication skills, which are too often overlooked in professional training. In May, Rwanda was the stage for a successful leadership training for representatives from national statistics offices of six countries. Paris21 is also unlocking the power of its ADAPT software for the development of strategic plans for agricultural statistics or SPARS. Together, FAO and Paris21 are helping countries align the production of statistics to national needs. This synergy was demonstrated in Madagascar where FAO's technical assistance on SPARS and Paris21's support on ADAPT has helped the country ensure optimal integration between the ongoing processes of SPARS and NSTS development. ECA is providing sustainable capacities in national institutions. In 2022, the scholarship program has supported 50 young men and women from 25 countries to tandem masters in agricultural statistics at three top African schools. This specialized expertise is much needed by their national institutions, which they will rejoin to form a new generation of highly skilled agricultural statisticians. And through the basic training in agricultural statistics held at NSEA in Apijan, 31 participants from 18 national agencies have further increased the critical mass of agricultural statisticians. For FAO, country-led technical assistance on cost-effective methods that supports beneficiaries on their national service as well as data processing, analysis and dissemination has already shown evidence of uptake and use. 34 workshops and trainings delivered in 2022 alone have established a link between technical assistance and national agendas. Countries are being supported where they needed the most to help them deliver on their own objectives. The workshop on farm typology in Burkina Faso is one such example. This training must allow the country to be able to develop in terms of structural and agricultural transformation in order to improve the target of our producers in order to better orient our interventions. This training has allowed us to visit them a little bit, so the collective groups, the rural community, we have a very valuable opportunity to integrate and develop on our own so we can be able to do something that we want to improve and connect with our institutions. 2023 will be an opportunity for the programme to consolidate its synergy base needs focused approach. But with such deeply transformative programmes, sites are set on more distant horizons. A third phase aiming at more sustainability can be the key to unlock the power of national agricultural data.


On the left-hand side, the opening call, you can get the opening call for one month for $149. You get it for six months, a $695, which is a savings of $190 or 22%, and you get it for one year for $1195, which is a savings of $593 or 33%. Now, they all come, folks, with a 30-day money-back guarantee, so no matter which one you pick that works for you, awesome. For some reason, it doesn't, 29th day, just cancel it. And Basil has a huge amount of archives out there that you can really understand how to ride that wave. Basil Chapman, what's going on? Well, what's going on is what's going off. I was in the middle of a show. I was able to set some time aside to do Larry's show and Larry's suffering from COVID, and it was going well, and suddenly everything just went off, everything, and then I finally got through the Comcast and turns out someone had cut the cable and they're going to spend a couple of hours replacing it. Isn't that wild how we live and die by cable and internet? You can't believe. Yeah, you're so... And I've got backups and everything, but I've got my laptop when I'm out of town and I'm overseas or anywhere around. I can use my laptop. It's all set up, but it's set up to go to my desktop, which has my charts that I use all the time. Sure. So I'm staying at a DAO that says DAO up 185. I'm not sure what it's up right now, but... 144. Yeah. Yeah. So I thought I'd just do this quickly because I wanted to give an overview... So Basil, first off, where are you?  Update. So you were going to say?  No, I'm actually right here in my office. Oh, okay, okay. I got it. You got cut off, but I'm saying that when I use my laptop, I can be anywhere in the world and connect, but I connect to my desktop and my home office. Right. So we're looking at the DAO right now. One of the things I had looked at and I discussed on my show quite often was the load that was made on the 25th of May in the DAO and the high that was made on August the 1st at 35,679, which actually is where we went short to down. We still short that position. Oh, I'm looking... We're back. I think I got my internet back, but it's too late. I'm looking at you on my laptop. So that was the exact number of days to October the 6th on Friday. That's crazy. You know, I used bar symmetry in a cup formation. The bottom from the left side high can go to the right side high in the same number of bars, and then the arm formation from the bottom to the top and then back again is exactly the same. I actually have to make you look... I'm sorry, Tom.  There it is. That's all right. Actually, as you're talking, I see what you're saying. So I put up a chart and it's showing the audience what you're talking about. Cool, man. Yeah. I'll do that on my show tomorrow. And my tiger thickness is out. I did it this morning as well. So it's the exact number of bars. So with that in mind, I was preparing that we should start a long... Just a trading position, which we have now. We actually have the three times long down because I thought we try to want to maximize whatever we can because how the big test is that the 200-period moving average is going to be very important if we turn down from there and it hit it exactly today at $30,000, $3,898. So let's see what happens after this. We've taken a little bit off to garner some really quick, very nice profits in that position. Then the other one was the QQQ, the NDX100. I've been using the nine-period moving average over or under the 14-period moving average as a kind of a benchmark for the turns in the Dow when we got that turn on exactly the first of August in the Dow to the downside. I was using unbalanced volume for that plus some other indicators. But the nine-period moving average took about 11 sessions before turn negative in the daily. Well, I've been looking at this and the weekly chart of the QQQ, the NDX100 trading vehicle hasn't turned pink. It's still green. Okay, if there is going to be a bounce, I'm sure that it's going to incorporate HAC, which we've missed the buy signal and even though I wanted to get it, we missed it. And that's the cybersecurity ETF. It was acting so well on Friday, early morning. And the S&P had already made a low three days on Wednesday, two days before that. So we went along the QQQ, which is three times along the Qs, just for the short trading position. And one of the reasons is if that weekly chart holds well, it means that it hasn't even given a sell signal yet. And that's a good sign. And you've had this rotation through the big cap. So because the stocks that I like in HAC are also in the QQQ, I thought this would be a good opportunity to do that. And then I was looking at the financials and they've been acting so poorly, but I thought if the bonds are able to get some kind of traction to the upside, then the financials should benefit a little bit. But I didn't want to go to the standard banks. We usually go to Bank of America. I said, no, I think we're going to go to an electronic banking system, be a little bit more contemporary because it has the... Panache, it has an extra... something interesting about it because it's mostly using high technology. So we bought... I mean, I'm not going to give the names so afraid of my subscribers because we just got it and it sounds fabulous. But we got a very low-priced internet banking stock. And that's been going well. So I'm being very selective on the moves. And even more importantly is that the dollar, even though it's pulled back and I don't know what the dollar's doing right now, but that does help because I drew in... I think I've seen you do that through our channel lines and the dollar ant was just testing a very important trend line right now. So I think if the dollar... I haven't got any technical indicators and say the dollar's going to weaken a lot. I see that it can pull back a little bit. And we are along the dollar, but if the dollar starts to pull back, I think it can help the general market because they have been... I wouldn't say tied exactly together, but the strength of the dollar has been impacting the market. So, yeah. So I thought I'd give a little bit of an overview here. You know, it's funny, Basil, when I was listening to your show this morning and, folks, you know, where Basil lives is a beautiful place, man. Great schools, just a great city. I used to go out there all the time because it has one of the best bagel shops in Boston, right? And Basil was talking about where Tesla's were in his neighborhood. Yeah. And they'd probably kick you out, Basil, if you came in with a muscle cop. You're correct. You're correct about that. But it is so funny.  Yeah. I mean, it's very interesting that they have dropped the prices. And if you look at the chargers, the chargers holding really was a vehicle company that has done so well in the street. I think of them as the old guys on the block because they've been around for a while. And they're as fast as anything in those Tesla's, man. Oh, my God. Oh, thank you. Well, listen, Basil, thanks for coming on, man. I really appreciate it. You have a great night, safe night. Glad you got the internet back and I look forward to the show tomorrow. Thank you very much, Tom. Stay right there, folks. Steve Rhodes.