# Performance Tuning
- <https://www.brendangregg.com/linuxperf.html>
- [How fast are Linux pipes anyway?](https://mazzo.li/posts/fast-pipes.html)
- This one has some particularly interesting information on optimizing syscalls
## Networking
[Linux Network Performance Ultimate Guide](https://ntk148v.github.io/posts/linux-network-performance-ultimate-guide/)
# Signals
[Should you be scared of Unix signals?](https://jvns.ca/blog/2016/06/13/should-you-be-scared-of-signals/)
This one likely also applies equally to [[UNIX]].
`SIGKILL` terminates a process immediately. There is not opportunity to handle it, perform any cleanup, or even execute any further code.
Every other signal may register a signal handler.
## Signal Execution
An application can call `signal(SIGXXX, function_pointer)` to register a signal handler. When the OS sends a signal, it pauses application execution and jumps to the signal handler (in the same process as the thread that is handling the signal, don't worry, it saves the registers and other application state appropriately).
# Helpful Snippets
To check a MMC storage device's block size:
`cat /sys/block/mmcblockX/device/preferred_erase_size`
# Reference Material
[Linux Inside](https://0xax.gitbooks.io/linux-insides/content/) - in-progress deep dive into the Linux kernel
[IPTables Interactive Diagram](https://zersh01.github.io/iptables_interactive_scheme/)
[Introduction to System Programming](https://nostarch.com/introduction-system-programming-linux)
## Kernel Modules
[The Linux Kernel Module Programming Guide](https://sysprog21.github.io/lkmpg/)