I’ve noticed that our auto-tier data relocation job that runs every evening consistently shows 2+days for the estimated time of completion. We have it set to run only 8 hours per day, so with our current configuration it’s likely the job will never reach a completed state. Based on that observation I started investigating what options I had to try and reduce the amount of time that the relocation jobs runs.
Running this command will tell you the current amount of time estimated to complete the relocation job data migrations and how much data is queued up to move:
Naviseccli –h <clarion_ip> autotiering –info –opStatus
Auto-Tiering State: Enabled
Relocation Rate: Medium
Schedule Name: Default Schedule
Schedule State: Enabled
Default Schedule: Yes
Schedule Days: Sun Mon Tue Wed Thu Fri Sat
Schedule Start Time: 22:00
Schedule Stop Time: 6:00
Schedule Duration: 8 hours
Storage Pools: Clariion1_SPB, Clariion2_SPA
Storage Pool Name: Clariion2_SPA
Storage Pool ID: 0
Relocation Start Time: 12/05/11 22:00
Relocation Stop Time: 12/06/11 6:00
Relocation Status: Inactive
Relocation Type: Scheduled
Relocation Rate: Medium
Data to Move Up (GBs): 2854.11
Data to Move Down (GBs): 1909.06
Data Movement Completed (GBs): 2316.00
Estimated Time to Complete: 2 days, 9 hours, 12 minutes
Schedule Duration Remaining: None
I’ll review some possibilities based on research I’ve done in the past few days. I’m still in the evaluation process and have not made any changes yet, I’ll update this blog post once I’ve implemented a change myself. If you are having issues with your data relocation job not finishing I would recommend opening an SR with EMC support for a detailed analysis before implementing any of these options.
1. Reduce the number of LUNs that use auto-tiering by disabling it on a LUN-by-LUN basis.
I would recommend monitoring which LUNs have the highest rate of change when the relocation job runs and then evaluate if any can be removed from auto-tiering altogether. The goal of this would be to reduce the amount of data that needs to be moved. The one caveat with this process is that when a LUN has auto-tiering disabled, the tier distribution of the LUN will remain exactly the same from the moment it is disabled. If you disable it on a LUN that is using a large amount of EFD it will not change unless you force it to a different tier or re-enable auto-tiering later.
This would be an effective way to reduce the amount of data being relocated, but the process of determining which LUNs should have auto-tiering disabled is subjective and would require careful analysis.
2. Reset all the counters on the relocation job.
Any incorrectly labeled “hot” data will be removed from the counters and all LUNs would be re-evaluated for data movement. One of the potential problems with auto-tiering is with servers that have IO intensive batch jobs that run infrequently. That data would be incorrectly labeled as “hot” and scheduled to move up even though the server is not normally busy. This information is detailed in emc268245.
To reset the counters, use the command to stop and start autotiering:
Naviseccli –h <clarion_ip> autotiering –relocation -<stop | start>
If you need to temporarily stop replication and do not want to reset the counters, use the pause/resume command instead:
Naviseccli –h <clarion_ip> autotiering –relocation -<pause | resume>
I wanted to point out that changing a specific LUN from “auto-tier” to “No Movement” also does not reset the counters, the LUN will maintain it’s tiering schedule. It is the same as pausing auto-tiering just for that LUN.
3. Increase free space available on the storage pools.
If your storage pools are nearly 100% utilized there may not be enough space to effectively migrate the data between the tiers. Add additional disks to the pool, or migrate LUNs to other RAID groups or storage pools.
4. Increase the relocation rate.
This of course could have dramatic effects on IO performance if it’s increased and it should only be changed during periods of measured low IO activity.
Run this command to change the data relocation rate:
Naviseccli –h <clarion_ip> autotiering –setRate –rate <high | medium | low>
5. Use a batch or shell script to pause and restart the job with the goal of running it more frequently during periods of low IO activity.
There is no way to set the relocation schedule to run at different times on different days of the week, a script is necessary to accomplish that. I currently run the job only in the middle of the night during off peak (non-business) hours, but I would be able to run it all weekend as well. I have done that manually in the past.
You would need to use an external windows or unix server to schedule the scripts. The relocation schedule should be set to run 24×7, then add the pause/resume command to have the job pause during the times you don’t want it to run. To have it run on weekends and overnight, set up two separate scripts (one for pause and one for resume), then schedule each with task scheduler or cron to run throughout the week.
The cron schedule below would allow it to run from 10PM to 6AM on weeknights and from 10PM to 6AM on Monday over the weekend.
pause.sh: Naviseccli –h <clarion_ip> autotiering –relocation –pause
resume.sh: Naviseccli –h <clarion_ip> autotiering –relocation -resume
0 6 * * * /scripts/pause.sh @6AM on Monday – pause
0 10 * * * /scripts/resume.sh @10PM on Monday – resume
0 6 * * * /scripts/pause.sh @6AM on Tuesay – pause
0 10 * * * /scripts/resume.sh @10PM on Tuesday – resume
0 6 * * * /scripts/pause.sh @6AM on Wednesday – pause
0 10 * * * /scripts/resume.sh @10PM on Wednesday – resume
0 6 * * * /scripts/pause.sh @6AM on Thursday – pause
0 10 * * * /scripts/resume.sh @10PM on Thursday – resume
0 6 * * * /scripts/pause.sh @6AM on Friday – pause
0 10 * * * /scripts/resume.sh @10PM on Friday – resume
<Do not pause again until Monday morning>