Linux kernel updates are super-frequent, but is it necessary to upgrade at all times?
Personal feeling is not necessary, but you should always focus on the new feature list, and then upgrade your kernel to a month or two from the latest version of the release instead of the latest version, to ensure stability, because a month or two enough of the eye will find enough problems, since they are not Alan Cox that Echelon Daniel, It is best not to use the latest kernel on your own production version, of course, to do experiments or just play exceptions.
Why upgrade the kernel? Yes, many people disagree with this view, perhaps they think that using the kernel to provide the most durable and stable interface is enough, most of the custom features need to develop themselves in the user space, of course, it is also compatible with the Unix philosophy, and they think the user state to write their own so rather than bash, Python scripts will improve the competitiveness of their software, because you do not see the source code, a so can achieve OpenVPN load balancing, you do not know how he did, so this mystery behind, people will think of its technology and advanced. Conversely, if you use the features provided by the kernel, they will think that this technology can be used by anyone, not exclusive of their own, made out of things will lose competitiveness.
This view is downright wrong and its wrong and childish!
The key is not how much you keep the technical details that others don't know, the key is how quickly you can launch a perfectly formed version of the one you can use, and how fast you can continue to update, continuous optimization, and this is not a big component of your own in-door epiphany, but from the user's feedback. Come on, it's the root!
How can you be quick? Simple, can not write their own directly to take, can use the out-of-the-box features directly use, so that you save a lot of work. Instead of delving into a technical detail, spend your mind on how to simply extend functionality to meet your needs. When you wrote so in C, did you call the API provided by someone else's C library and a third party (or even your colleague)? This is not to be brought? You hide just how to assemble the details of all this, and this is just a way, no one cares how you assemble the components into functions that the user cares about can be used.
For example, I chi for a few weeks on the Linux 2.6.32 kernel how to allow multiple OpenVPN processes to share a single Tun Nic, in fact I have rewritten the Tun driver, but have not been tested for stability stress, so I do not know, I have done may be only feasible pre-research , which was later driven by no projects or personal reasons, could only remain on paper. But after all, it consumed my time and energy, although I did not occupy my work time (not the same when the late), then the wife and daughter for a long time not around, I myself at home, after work or on the weekends have plenty of hours, But after all, because of this thing I still owe a few documentaries about ancient Rome. It took me a long time to study how to implement UDP service concurrency, the UNIX network programming program also saw, for OpenVPN such a service is not practical, I think through the fork to let the child process inherit the parent process of the UDP descriptor, but there will be a surprise group problem, I know there is so_ Reuseport this option, but the implementation of Linux does not meet my needs (this is the implementation problem, not the interface problem), so I spent a long time to write out the UDP multi-port Load Balancer kernel module, and also came up with the use of iptables random Dnat solution, however as long as I upgrade the kernel version to 3.9.6 this version or above, all the problems are solved, I just need to set a so_reuseport option on the UDP socket, and I no longer need to write code.
The higher version of the kernel has three aspects of utility, more efficient, more new features, bug fixes, but new bugs may be introduced for the newly introduced features, but you just need to use the new features carefully. For example, I actually use the function, such as the TCP fast Open, the network namespace, the multi-queue Tun network card, these are not supported on the 2.6.32 kernel (namespaces are there, but the interface is too inconvenient to use). Do you want to spend January of your own time writing a multi-queue Tun drive? Or do you want to have a direct use? Admittedly, the high version of the kernel comes with the Tun driver is not you write, does not represent your strength, can not bring you competitive, but your purpose is not only to use a multi-queue Tun, your goal may be to engage in an alternative OpenVPN, others never thought of those easy-to-use features, The possible new requirements that you distill yourself, these are competitiveness, not their realization. I arrived in Rome through Apia Avenue, and you went to the Alps, yes, you more than I can embody what is strength and perseverance, but I came first.
What's wrong with upgrading the kernel? No free lunch, upgrade the kernel is no exception. After the upgrade, all the application software can still be normal? This means that the API specification for the two-version kernel has changed? In general, compatibility is one of the essential features of the kernel API, but it is not absolute and everything is not absolute. So, in the unlikely event of a problem, you may never know that it has problems, and you can easily prove that something is wrong, but it is hard to prove that it is correct. In that case, that's what scares you, and upgrading is the only option, because even if you don't, you can't prove that the current kernel-to-application collaboration is fine, even though they've been tested at least, but can't you do the same test on the new kernel? You can't stop moving because you are afraid of mistakes.
Perhaps you can insist that all things develop themselves to maintain their originality and competitiveness, while carefully guarding their own victories, for fear of being robbed by others, and willing to pay for all of these costs, because everyone is doing so. But I stick to my point of view, looking around for clues, minimize the workload to meet the biggest demand, things can not be I do, but must be I hand in your hands. The Linux kernel is so big a treasure trove, there are always new things for you to use, you can use its latest interface to implement new ideas, you can also extract its internal algorithm, so far, I have used a lot of algorithms from the Linux kernel, such as embedded list,hlist, such as the hash algorithm of routing lookup, Trie algorithm, red black tree, AVL tree, radix tree and other containers, but also borrowed from its CFS and O (1) scheduling algorithm to achieve a message output system, from the Linux kernel to say, The value of any open source code is not just the free use distribution of the software itself, but the internal implementation itself is a treasure trove of things you can get from it. However, just to be shameless, must maintain a moment to share the heart. The point of upgrading the kernel is that in front of you, a lot of fun things you can see is what you get, whether it is work, or the usual weekend toss. Of course if you are a corporate Director-level person, or you have a deep burden, you can put what I say as a bunch of crap, because you may have more important factors to consider, such as customer upgrades and the like, such as compatibility, and more than just a pure technical fun. But even for those who are in the middle of the so-called circles, if you have gotten rid of the burden, please consider my point of view and keep up to date.
PS: Why can't I learn python
Can't you learn? Maybe. Don't you want to learn? No. People say that Python is simple, but why I have not learned it systematically in several times. Because I focus on the problem itself, not how it is implemented. I wanted to buy a Raspberry Pi to change the home TV set to a Web player, and to use Python to manage the UI, and to learn python through such an action, I thought it would be a UI for me to master Python, however, I was bent on getting a little adventure Dora through my TV set. So I found on the Internet ready-made code, copy and paste, a small number of changes, the task quickly completed, Python did not learn ... I was depressed, but small but very happy.