Skip to main content

Not handling signals degrades performance

Signals are asynchronous software interrupts that usually happen due to users or utilities sending signals to processes, hardware exceptions within applications, and conditional statements within applications. Most applications do not handle signals because programmers are told "error checking" means checking return values, e.g. does a function return 0 or -1?

When an application doesn't handle signals, it relies on the kernel to do what it thinks is best for an application and the application's data after an error occurs. Sometimes an error is returned to the user, other times the problem is ignored. That's because kernels react to categorized errors, not to specifc errors caused by every imaginable application.   

Some interesting and hard to find performance issues arise when applications do not handle signals, such as an accumulation of lost i-nodes, race conditions between statements, random data corruption and other unexpected behavior. A lot of performance issues are avoidable by assigning default actions to caught signals.

I think the biggest problem with handling signals is portability. The number and type of signals available vary across operating systems. For example, most Linux operating systems do not have a default value assigned to the NULL signal and have between 1 and 31 signals. Whereas, Unix has a default value of 0 assigned to the NULL signal and can have more than 255 signals.

Do you have a suggestion about how to improve this blog? Let's talk about it. Contact me at David.Brenner.Jr@Gmail.com or 720-584-5229.

Comments

Popular posts from this blog

The meaning of time in reinforcement learning

Reinforcement learning (RL) is one of three basic machine learning paradigms, alongside supervised learning and unsupervised learning. Reinforcement learning is concerned with how software agents ought to take actions in an environment in order to maximize the notion of cumulative reward through the process of trial and error. In reinforcement learning an agent starts at an empty state then analyzes the available datasets according to a policy of positive states and negative states. Rather than being explicitly taught as in supervised learning the correct set of actions for performing a task, reinforcement learning uses rewards as signals for positive states and punishments as signals for negative states. The agent obtains the best path to a desirable reward as a cumulation of positive states and negative states. As compared to unsupervised learning, reinforcement learning is different in terms of goals. While the goal in unsupervised learning is to find similarities and differences...

Old idea of encrypted, anonymous group chats

Encrypted, Anonymous Group Chats An owner of the chat connects through multiple VPNs, like NordVPN and SurfShark which are the most popular. Then the owner obtains access to an email provider hosted in a country outside the United States. Once the new email account has been setup and ready to use, the owner shares the login username and login password of that email account with the participants. The idea is to never send/receive any emails, only exchange messages saved as drafts in the email account. The drafts don't get sent/received anywhere. It's also important to note that messages are saved as new drafts without subject-line and recipient-info. Ideally there will be at most two drafts in the account at a time. When the chat is finished the email account is deleted. Whenever the participants are ready to chat, the participants login to that email account and compose a new email. They will write a message and encrypt it with PGP, then save it as a new draft without subjec...

Threat detection of zero-day attacks in Linux with Python

You can investigate suspicious activity that could be a zero-day attack by collecting relevant machine data from your endpoint. You can use the machine data to create your own analysis. Before you start your investigation you will need to determine normal activity on your endpoint. Normal activity is the scope of functionality of the software on your endpoint during periods of low activity and high activity. You will need some kind of software that periodically collects specific machine data from your endpoint like my software developed in Python that's available for free download at https://github.com/davidbrennerjr/server-stats-collector Ingest one or more of the following machine data: General system-wide error messages from /var/log/syslog Auditing logs of application rulesets Auditing logs of security contexts Auditing logs of login attempts from /var/log/auth.log Auditing logs of user management or group manageme...