Profiling the Shared File Systems service

Profiler

The detailed description of the profiler and its config options is available at Profiler docs.

Using Profiler

To start profiling Manila code, the following steps have to be taken:

  1. Add the following lines to the /etc/manila/manila.conf file (the profiling is disabled by default).

    [profiler]
    connection_string = redis://localhost:6379
    hmac_keys = SECRET_KEY
    trace_sqlalchemy = True
    enabled = True
    

    Examples of possible values for connection_string option:

    • messaging:// - use oslo_messaging driver for sending spans.

    • redis://127.0.0.1:6379 - use redis driver for sending spans.

    • mongodb://127.0.0.1:27017 - use mongodb driver for sending spans.

    • elasticsearch://127.0.0.1:9200 - use elasticsearch driver for sending spans.

    • jaeger://127.0.0.1:6831 - use jaeger tracing as driver for sending spans.

  2. Restart all manila services and keystone service.

  3. To verify profiler with manilaclient, run any command with --profile <key>. The key (e.g. SECRET_KEY) should be one of the hmac_keys mentioned in manila.conf. To generate correct profiling information across all services at least one key needs to be consistent between OpenStack projects.

    $ manila --profile SECRET_KEY create NFS 1 --name Share1 --share-network testNetwork --share-type dhss_true
     +---------------------------------------+--------------------------------------+
     | Property                              | Value                                |
     +---------------------------------------+--------------------------------------+
     | id                                    | 9703da88-25ba-41e6-827d-a6932f708dd4 |
     | size                                  | 1                                    |
     | availability_zone                     | None                                 |
     | created_at                            | 2021-02-23T11:21:38.000000           |
     | status                                | creating                             |
     | name                                  | Share1                               |
     | description                           | None                                 |
     | project_id                            | c67b2fd35b054060971d28cf654ee92a     |
     | snapshot_id                           | None                                 |
     | share_network_id                      | 03754c58-1456-497f-b7d6-8f36a4d644f0 |
     | share_proto                           | NFS                                  |
     | metadata                              | {}                                   |
     | share_type                            | 5b1a4133-371c-4583-a801-f2b6e1ae102d |
     | is_public                             | False                                |
     | snapshot_support                      | False                                |
     | task_state                            | None                                 |
     | share_type_name                       | dhss_true                            |
     | access_rules_status                   | active                               |
     | replication_type                      | None                                 |
     | has_replicas                          | False                                |
     | user_id                               | 7ecd60ddae1448b79449dc6434460eaf     |
     | create_share_from_snapshot_support    | False                                |
     | revert_to_snapshot_support            | False                                |
     | share_group_id                        | None                                 |
     | source_share_group_snapshot_member_id | None                                 |
     | mount_snapshot_support                | False                                |
     | progress                              | None                                 |
     | share_server_id                       | None                                 |
     | host                                  |                                      |
     +---------------------------------------+--------------------------------------+
     Profiling trace ID: 1705dfd8-e45a-46cd-b0e2-2e40fd9e5f22
     To display trace use next command:
     osprofiler trace show --html 1705dfd8-e45a-46cd-b0e2-2e40fd9e5f22
    
  4. To verify profiler with openstackclient, run any command with --os-profile <key>.

    $ openstack --os-profile SECRET_KEY share create NFS 1 --name Share2 --share-network testNetwork --share-type dhss_true
     +---------------------------------------+--------------------------------------+
     | Field                                 | Value                                |
     +---------------------------------------+--------------------------------------+
     | access_rules_status                   | active                               |
     | availability_zone                     | None                                 |
     | create_share_from_snapshot_support    | False                                |
     | created_at                            | 2021-02-23T11:23:41.000000           |
     | description                           | None                                 |
     | has_replicas                          | False                                |
     | host                                  |                                      |
     | id                                    | 78a19734-394f-4967-9671-c226df00a023 |
     | is_public                             | False                                |
     | metadata                              | {}                                   |
     | mount_snapshot_support                | False                                |
     | name                                  | Share2                               |
     | progress                              | None                                 |
     | project_id                            | c67b2fd35b054060971d28cf654ee92a     |
     | replication_type                      | None                                 |
     | revert_to_snapshot_support            | False                                |
     | share_group_id                        | None                                 |
     | share_network_id                      | 03754c58-1456-497f-b7d6-8f36a4d644f0 |
     | share_proto                           | NFS                                  |
     | share_server_id                       | None                                 |
     | share_type                            | 5b1a4133-371c-4583-a801-f2b6e1ae102d |
     | share_type_name                       | dhss_true                            |
     | size                                  | 1                                    |
     | snapshot_id                           | None                                 |
     | snapshot_support                      | False                                |
     | source_share_group_snapshot_member_id | None                                 |
     | status                                | creating                             |
     | task_state                            | None                                 |
     | user_id                               | 7ecd60ddae1448b79449dc6434460eaf     |
     | volume_type                           | dhss_true                            |
     +---------------------------------------+--------------------------------------+
     Trace ID: 0ca7ce01-36a9-481c-8b3d-263a3b5caa35
     Short trace ID for OpenTracing-based drivers: 8b3d263a3b5caa35
     Display trace data with command:
     osprofiler trace show --html 0ca7ce01-36a9-481c-8b3d-263a3b5caa35
    
  5. To display the trace date in HTML format, run below command.

    $ osprofiler trace show --html 0ca7ce01-36a9-481c-8b3d-263a3b5caa35 --connection-string redis://localhost:6379 --out /opt/stack/output.html