Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Azure cache #10171

Merged
merged 3 commits into from Aug 9, 2016
Merged

Azure cache #10171

merged 3 commits into from Aug 9, 2016

Conversation

roliveri
Copy link
Member

@roliveri roliveri commented Aug 1, 2016

Purpose or Intent

Currently, SSA on Azure does not cache any disk IO. This results in many more IO requests made through the Azure API, than needed. Not only does this impact performance, it is prone to failure because Azure limits the number of IO requests made per hour.

This PR uses the MiqDiskCache module to provide disk IO caching for Azure SSA. Results show that the number of read requests per scan goes from over 7000 (un-cached) to less than 1000 (cached) - for a cross section of sample VMs. Also, scan times go from > 20 min to < 4 min in many cases.

Also:
Added additional debug logging to AzureBlobDisk.
Removed MD5 check in AzureBlobDisk - it's not needed.
@roliveri
Copy link
Member Author

roliveri commented Aug 1, 2016

@chessbyte @Fryguy @hsong-rh - Please review.

@roliveri
Copy link
Member Author

roliveri commented Aug 1, 2016

@chessbyte - the cassette files submitted with PR may not apply to Darga. We'll probably have to cherry-pick the commit for the code changes, and rerecord the cassettes for Darga.

@Fryguy
Copy link
Member

Fryguy commented Aug 1, 2016

@bdunne Would it be possible to avoid yml files in the content checker for the bot? See the results here.

@miq-bot
Copy link
Member

miq-bot commented Aug 9, 2016

<github_pr_commenter_batch />Some comments on commits roliveri/manageiq@6c27d6e~...31d54e1

gems/pending/spec/recordings/miq_vm/miq_azure_vm_image_spec/miq_azure_vm_image_spec_rootTrees-1.yml

  • ⚠️ - 33534 - Detected pp. Remove all debugging statements.
  • ⚠️ - 4442 - Detected pp. Remove all debugging statements.

gems/pending/spec/recordings/miq_vm/miq_azure_vm_image_spec/miq_azure_vm_image_spec_rootTrees-2.yml

  • ⚠️ - 33534 - Detected pp. Remove all debugging statements.
  • ⚠️ - 4442 - Detected pp. Remove all debugging statements.

gems/pending/spec/recordings/miq_vm/miq_azure_vm_image_spec/miq_azure_vm_image_spec_rootTrees-3.yml

  • ⚠️ - 33534 - Detected pp. Remove all debugging statements.
  • ⚠️ - 4442 - Detected pp. Remove all debugging statements.

gems/pending/spec/recordings/miq_vm/miq_azure_vm_image_spec/miq_azure_vm_image_spec_rootTrees-4.yml

  • ⚠️ - 33534 - Detected pp. Remove all debugging statements.
  • ⚠️ - 4442 - Detected pp. Remove all debugging statements.

gems/pending/spec/recordings/miq_vm/miq_azure_vm_image_spec/miq_azure_vm_image_spec_rootTrees-5.yml

  • ⚠️ - 33534 - Detected pp. Remove all debugging statements.
  • ⚠️ - 4442 - Detected pp. Remove all debugging statements.

gems/pending/spec/recordings/miq_vm/miq_azure_vm_image_spec/miq_azure_vm_image_spec_rootTrees-6.yml

  • ⚠️ - 33534 - Detected pp. Remove all debugging statements.
  • ⚠️ - 4442 - Detected pp. Remove all debugging statements.

gems/pending/spec/recordings/miq_vm/miq_azure_vm_image_spec/miq_azure_vm_image_spec_rootTrees-7.yml

  • ⚠️ - 33534 - Detected pp. Remove all debugging statements.
  • ⚠️ - 4442 - Detected pp. Remove all debugging statements.

gems/pending/spec/recordings/miq_vm/miq_azure_vm_instance_spec/miq_azure_vm_instance_spec_rootTrees-1.yml

  • ⚠️ - 2179 - Detected pp. Remove all debugging statements.

gems/pending/spec/recordings/miq_vm/miq_azure_vm_instance_spec/miq_azure_vm_instance_spec_rootTrees-2.yml

  • ⚠️ - 2179 - Detected pp. Remove all debugging statements.

gems/pending/spec/recordings/miq_vm/miq_azure_vm_instance_spec/miq_azure_vm_instance_spec_rootTrees-3.yml

  • ⚠️ - 2179 - Detected pp. Remove all debugging statements.

gems/pending/spec/recordings/miq_vm/miq_azure_vm_instance_spec/miq_azure_vm_instance_spec_rootTrees-4.yml

  • ⚠️ - 2179 - Detected pp. Remove all debugging statements.

gems/pending/spec/recordings/miq_vm/miq_azure_vm_instance_spec/miq_azure_vm_instance_spec_rootTrees-5.yml

  • ⚠️ - 2179 - Detected pp. Remove all debugging statements.

gems/pending/spec/recordings/miq_vm/miq_azure_vm_instance_spec/miq_azure_vm_instance_spec_rootTrees-6.yml

  • ⚠️ - 2179 - Detected pp. Remove all debugging statements.

gems/pending/spec/recordings/miq_vm/miq_azure_vm_instance_spec/miq_azure_vm_instance_spec_rootTrees-7.yml

  • ⚠️ - 2179 - Detected pp. Remove all debugging statements.

@miq-bot
Copy link
Member

miq-bot commented Aug 9, 2016

Checked commits roliveri/manageiq@6c27d6e~...31d54e1 with ruby 2.2.5, rubocop 0.37.2, and haml-lint 0.16.1
2 files checked, 0 offenses detected
Everything looks good. 🍪

@roliveri
Copy link
Member Author

roliveri commented Aug 9, 2016

@Fryguy - ping.

@Fryguy
Copy link
Member

Fryguy commented Aug 9, 2016

+736,807 −461,577 Silly yml files haha... cc @jrafanie

@Fryguy Fryguy merged commit 25f9dd0 into ManageIQ:master Aug 9, 2016
@Fryguy Fryguy added this to the Sprint 45 Ending Aug 22, 2016 milestone Aug 9, 2016
@chessbyte
Copy link
Member

Darga cherry-pick merge conflict:

$ git cherry-pick -x -m 1 25f9dd0  
error: could not apply 25f9dd0... Merge pull request #10171 from roliveri/azure_cache
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

$ git status
On branch darga
Your branch is up-to-date with 'upstream/darga'.
You are currently cherry-picking commit 25f9dd0.
  (fix conflicts and run "git cherry-pick --continue")
  (use "git cherry-pick --abort" to cancel the cherry-pick operation)

Changes to be committed:

        modified:   gems/pending/MiqVm/miq_azure_vm.rb
        modified:   gems/pending/disk/modules/AzureBlobDisk.rb

Unmerged paths:
  (use "git add <file>..." to mark resolution)

        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_image_spec/miq_azure_vm_image_spec_new-1.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_image_spec/miq_azure_vm_image_spec_new-2.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_image_spec/miq_azure_vm_image_spec_new-3.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_image_spec/miq_azure_vm_image_spec_new-4.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_image_spec/miq_azure_vm_image_spec_rootTrees-1.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_image_spec/miq_azure_vm_image_spec_rootTrees-2.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_image_spec/miq_azure_vm_image_spec_rootTrees-3.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_image_spec/miq_azure_vm_image_spec_rootTrees-4.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_image_spec/miq_azure_vm_image_spec_rootTrees-5.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_image_spec/miq_azure_vm_image_spec_rootTrees-6.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_image_spec/miq_azure_vm_image_spec_rootTrees-7.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_instance_spec/miq_azure_vm_instance_spec_new-1.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_instance_spec/miq_azure_vm_instance_spec_new-2.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_instance_spec/miq_azure_vm_instance_spec_new-3.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_instance_spec/miq_azure_vm_instance_spec_new-4.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_instance_spec/miq_azure_vm_instance_spec_rootTrees-1.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_instance_spec/miq_azure_vm_instance_spec_rootTrees-2.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_instance_spec/miq_azure_vm_instance_spec_rootTrees-3.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_instance_spec/miq_azure_vm_instance_spec_rootTrees-4.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_instance_spec/miq_azure_vm_instance_spec_rootTrees-5.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_instance_spec/miq_azure_vm_instance_spec_rootTrees-6.yml
        both modified:   gems/pending/spec/recordings/miq_vm/miq_azure_vm_instance_spec/miq_azure_vm_instance_spec_rootTrees-7.yml

@roliveri
Copy link
Member Author

@chessbyte Right. See my comment above in the original PR. The cassette files (in their own commit) don't apply to Darga because they're based on a version of azure-armrest that's not used by Darga.

The commits for the code changes can be cherry-picked, but the cassette yaml files will need to be re-recorded in the Darga environment. I can re-record the cassettes, but I'm not sure how to get them into Darga with the code changes. Can we make a PR for the Darga branch that contains the code commits of this PR and a new commit for the Darga-specific cassette files?

/cc @Fryguy

@roliveri roliveri mentioned this pull request Aug 24, 2016
@chessbyte
Copy link
Member

Backported to Darga via #10752

$ git log
commit bb6cb2fc9f62b6e1f85126e53ab3fd3833bd9185
Merge: e8dcd99 cf07b6f
Author: Oleg Barenboim <chessbyte@gmail.com>
Date:   Tue Aug 30 10:55:29 2016 -0400

    Merge pull request #10752 from roliveri/darga_azure_cache

    [DARGA] azure cache

@JPrause
Copy link
Member

JPrause commented Sep 12, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants