forked from etingof/pysnmp
-
-
Notifications
You must be signed in to change notification settings - Fork 26
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
61 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
.. include:: /includes/_links.rst | ||
|
||
Performance Tuning | ||
================== | ||
|
||
PySNMP is a highly optimized software. However, there are some knobs you | ||
can turn to make it work even faster. Here are some tips: | ||
|
||
Disabling MIB Support | ||
--------------------- | ||
|
||
Loading MIB metadata into memory is a costly operation. If you are not | ||
using MIBs in your application, you can disable MIB support by | ||
|
||
TODO: Add a code snippet here. | ||
|
||
Run Python Release Mode | ||
----------------------- | ||
|
||
Python interpreter can run in debug and release modes. Running in release | ||
mode can make your Python code run faster. To run Python in release mode, | ||
you can use the following command: | ||
|
||
.. code-block:: bash | ||
$ python -O myscript.py | ||
Choosing the Right High-Level API | ||
--------------------------------- | ||
|
||
PySNMP comes with two high-level APIs: v1 and v3. | ||
|
||
If you are using SNMPv1 and SNMPv2c, and you are not using any security | ||
features in your application, you should use the v1 API. The | ||
``SnmpDispatcher`` based API is the fastest API in PySNMP, as it simply | ||
sends SNMP packets and does not do any heavy processing on the packets. | ||
|
||
If you are using SNMPv3, you have to use the v3 API with USM and VACM to | ||
handle security and access control. The v3 API is significantly slower than | ||
the v1 API because it builds up a local secure engine and has to do more | ||
processing on the packets in order to be compliant with SNMPv3 standards. | ||
|
||
Using the right API, and using the right features in the API can make your | ||
application run reasonably fast. | ||
|
||
Don't trust blindly other Python SNMP libraries claiming to be faster. They | ||
either lack of essential features that make the comparison pointless or | ||
they bind to native libraries that become your nightmare to maintain and | ||
deploy. In the end the performance is limited by the Python interpreter and | ||
the SNMP protocol itself. |