US2017123700A1PendingUtilityA1

Io redirection methods with cost estimation

50
Assignee: SAMSUNG ELECTRONICS CO LTDPriority: Nov 3, 2015Filed: Oct 27, 2016Published: May 4, 2017
Est. expiryNov 3, 2035(~9.3 yrs left)· nominal 20-yr term from priority
G06F 3/065G06F 3/067G06F 3/0619G06F 12/0253G06F 2212/702G06F 3/061G06F 3/0635G06F 2212/7205G06F 2212/154G06F 12/0246
50
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

A distributed storage system node ( 125, 130, 135 ) is disclosed. The distributed storage system node ( 125, 130, 135 ) may include at least one storage device ( 140, 145, 150, 155, 160, 165, 225, 230 ), which may act as the primary replica ( 2315 ) for data subject to an Input/Output (I/O) request ( 905 ). A cost analyzer ( 2310 ) may calculate a local estimated time required ( 3305 ) to complete the I/O request ( 905 ) at the primary replica, and a remote estimated time required ( 3710 ) to complete the I/O request ( 905 ) at a secondary replica ( 2320, 2325 ) of the data. An I/O redirector ( 215 ) may direct the I/O request ( 905 ) to either the primary replica ( 2315 ) or the secondary replica ( 2320, 2325 ) based on the local estimated time required ( 3305 ) and the one remote estimated time required ( 3710 ).

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
         1 . A distributed storage system node ( 125 ,  130 ,  135 ), comprising:
 at least one storage device ( 140 ,  145 ,  150 ,  155 ,  160 ,  165 ,  225 ,  230 ), the at least one storage device ( 140 ,  145 ,  150 ,  155 ,  160 ,  165 ,  225 ,  230 ) including a primary replica ( 2315 ) of data;   a cost analyzer ( 2310 ) to calculate a local estimated time required ( 3305 ) to complete an Input/Output (I/O) request ( 905 ) at the primary replica ( 2315 ) and at least one remote estimated time required ( 3710 ) to complete the I/O request ( 905 ) at least one secondary replica ( 2320 ,  2325 ) of the data; and   an I/O redirector ( 215 ) to direct the I/O request ( 905 ) to one of the primary replica ( 2315 ) and the at least one secondary replica ( 2320 ,  2325 ) responsive to the local estimated time required ( 3305 ) and the at least one remote estimated time required ( 3710 ).   
     
     
         2 . A distributed storage system node ( 125 ,  130 ,  135 ) according to  claim 1 , wherein the distributed storage system node ( 125 ,  130 ,  135 ) is drawn from a set including a Network Attached Solid State Drive (SSD) and an Ethernet SSD. 
     
     
         3 . A distributed storage system node ( 125 ,  130 ,  135 ) according to  claim 1 , wherein the I/O redirector ( 215 ) is operative to redirect the I/O request ( 905 ) only if the at least one storage device ( 140 ,  145 ,  150 ,  155 ,  160 ,  165 ,  225 ,  230 ) is currently undergoing garbage collection. 
     
     
         4 . A distributed storage system node ( 125 ,  130 ,  135 ) according to  claim 3 , wherein:
 the cost analyzer ( 2310 ) includes a local time estimator ( 2405 ) to calculate the local estimated time required ( 3305 ) to process the I/O request ( 905 ) at the primary replica ( 2315 ); and   the I/O redirector ( 215 ) includes:
 storage ( 2505 ) for a threshold time ( 2525 ); and 
 a first comparator ( 2510 ) to compare the local estimated time required ( 3305 ) with the threshold time ( 2525 ). 
   
     
     
         5 . A distributed storage system node ( 125 ,  130 ,  135 ) according to  claim 4 , wherein the local time estimator ( 2405 ) includes:
 a local garbage collection time calculator ( 2605 ) to calculate a local garbage collection time ( 2820 );   a local predicted garbage collection time calculator ( 2610 ) to calculate a local predicted garbage collection time ( 2905 );   storage ( 2620 ) for a local garbage collection weight ( 2635 ) and a predicted garbage collection weight ( 2640 ); and   a local estimated time required calculator ( 2625 ) to calculate a local estimated time required ( 3305 ) from the local garbage collection time ( 2820 ), the local predicted garbage collection time ( 2905 ), the local garbage collection weight ( 2635 ), and the predicted garbage collection weight ( 2640 ).   
     
     
         6 . A distributed storage system node ( 125 ,  130 ,  135 ) according to  claim 5 , wherein:
 the cost analyzer ( 2310 ) further comprises:
 query logic ( 2415 ) to query the primary replica ( 2315 ) for an actual number of free pages ( 2805 ); and 
 reception logic ( 2420 ) to receive from the primary replica ( 2315 ) the actual number of free pages ( 2805 ); and 
   the local garbage collection time calculator ( 2605 ) is operative to calculate a difference by subtracting the actual number of free pages ( 2805 ) from a threshold number of free pages ( 2810 ) for the primary replica ( 2315 ) and to calculate the local garbage collection time ( 2820 ) by multiplying ( 4160 ) the difference by an local average garbage collection time ( 2815 ).   
     
     
         7 . A distributed storage system node ( 125 ,  130 ,  135 ) according to  claim 6 , wherein the local garbage collection time calculator ( 2605 ) is further operative to add a delay ( 2825 ) associated with Programming valid pages in each erase block to the local garbage collection time ( 2820 ). 
     
     
         8 . A distributed storage system node ( 125 ,  130 ,  135 ) according to  claim 5 , wherein the cost analyzer ( 2310 ) further includes:
 a database ( 2425 ) storing information including at least one of historical local garbage collection information ( 3105 ) for the primary replica ( 2315 ), a worst case estimate for local garbage collection ( 3110 ) on the primary replica ( 2315 ), an average case estimate for local garbage collection ( 3115 ) on the primary replica ( 2315 ), historical processing time information ( 3120 ) for the primary replica ( 2315 ), a worst case estimate for processing time ( 3125 ) on the primary replica ( 2315 ), and an average case estimate for processing time ( 3130 ) on the primary replica ( 2315 ); and   a local predictive analyzer ( 2430 ) to calculate a predicted local time ( 3205 ) for the primary replica ( 2315 ) from the information stored in the database ( 2425 ).   
     
     
         9 . A distributed storage system node ( 125 ,  130 ,  135 ) according to  claim 4 , wherein:
 the cost analyzer ( 2310 ) further includes a remote time estimator ( 2410 ) to calculate the at least one remote estimated time required ( 3710 ) to process the I/O request ( 905 ) at the at least one secondary replica ( 2320 ,  2325 ); and   the I/O redirector ( 215 ) further includes:
 a second comparator ( 2515 ) to compare the local estimated time required ( 3305 ) with the at least one remote estimated time required ( 3710 ); and 
 a selector ( 2520 ) to select one of the primary replica ( 2315 ) and the at least one secondary replica ( 2320 ,  2325 ) to process the I/O request ( 905 ) with a minimum time from the local estimated time required ( 3305 ) and the at least one remote estimated time required ( 3710 ). 
   
     
     
         10 . A distributed storage system node ( 125 ,  130 ,  135 ) according to  claim 9 , wherein the remote time estimator ( 2410 ) includes:
 a communication time calculator ( 2705 ) to calculate a communication time ( 3410 ) between the distributed storage system node ( 125 ,  130 ,  135 ) and at least one secondary storage system node ( 125 ,  130 ,  135 ) including the at least one secondary replica ( 2320 ,  2325 );   a remote processor time calculator ( 2710 ) to calculate a remote processor time ( 3515 ) for the at least one secondary storage system node ( 125 ,  130 ,  135 );   a remote garbage collection time calculator ( 2715 ) to calculate a remote garbage collection time ( 3705 ) for the at least one secondary replica ( 2320 ,  2325 );   storage ( 2720 ) for a communication time weight ( 2735 ), a remote processor time weight ( 2740 ), and a remote garbage collection time weight ( 2745 ); and   a remote estimated time required calculator ( 2725 ) to calculate the remote estimated time required ( 3710 ) from the communication time ( 3410 ), the remote processor time ( 3515 ), the remote garbage collection time ( 3705 ), the communication time weight ( 2735 ), the remote processor time weight ( 2740 ), and the remote garbage collection time weight ( 2745 ).   
     
     
         11 . A cost analyzer ( 2310 ), comprising:
 a local time estimator ( 2405 ) to calculate the local estimated time required ( 3305 ) to process an Input/Output (I/O) request ( 905 ) at a primary replica ( 2315 ) of data, the primary replica ( 2315 ) included on a storage device ( 140 ,  145 ,  150 ,  155 ,  160 ,  165 ,  225 ,  230 ); and   a remote time estimator ( 2410 ) to calculate at least one remote estimated time required ( 3710 ) to process the I/O request ( 905 ) at at least one secondary replica ( 2320 ,  2325 ) of the data,   wherein the cost analyzer ( 2310 ) enables an I/O redirector ( 215 ) to direct the I/O request ( 905 ) to one of the primary replica ( 2315 ) and the at least one secondary replica ( 2320 ,  2325 ) responsive to the local estimated time required ( 3305 ) and the at least one remote estimated time required ( 3710 ).   
     
     
         12 . A cost analyzer ( 2310 ) according to  claim 11 , wherein the cost analyzer ( 2310 ) is activated only if the primary replica ( 2315 ) is performing garbage collection. 
     
     
         13 . A cost analyzer ( 2310 ) according to  claim 12 , wherein the remote time estimator ( 2410 ) includes:
 a communication time calculator ( 2705 ) to calculate a communication time ( 3410 ) between the distributed storage system node ( 125 ,  130 ,  135 ) and at least one secondary storage system node ( 125 ,  130 ,  135 ) including the at least one secondary replica ( 2320 ,  2325 );   a remote processor time calculator ( 2710 ) to calculate a remote processor time ( 3515 ) for the at least one secondary storage system node ( 125 ,  130 ,  135 );   a remote garbage collection time calculator ( 2715 ) to calculate a remote garbage collection time ( 3705 ) for the at least one secondary replica ( 2320 ,  2325 );   storage ( 2720 ) for a communication time weight ( 2735 ), a remote processor time weight ( 2740 ), and a remote garbage collection time weight ( 2745 ); and   a remote estimated time required calculator ( 2725 ) to calculate the remote estimated time required ( 3710 ) from the communication time ( 3410 ), the remote processor time ( 3515 ), the remote garbage collection time ( 3705 ), the communication time weight ( 2735 ), the remote processor time weight ( 2740 ), and the remote garbage collection time weight ( 2745 ).   
     
     
         14 . A cost analyzer ( 2310 ) according to  claim 13 , wherein the communication time calculator ( 2705 ) includes ping logic ( 3405 ) to ping the at least one secondary storage system node ( 125 ,  130 ,  135 ) to measure the communication time ( 3410 ). 
     
     
         15 . A cost analyzer ( 2310 ) according to  claim 13 , wherein:
 the cost analyzer ( 2310 ) further includes:
 query logic ( 2415 ) to query the at least one secondary storage system node ( 125 ,  130 ,  135 ) for a remote processor load ( 3505 ) on the at least one secondary storage system node ( 125 ,  130 ,  135 ); and 
 reception logic ( 2420 ) to receive from the at least one secondary storage system node ( 125 ,  130 ,  135 ) the remote processor load ( 3505 ); and 
   the remote processor time calculator ( 2710 ) is operative to calculate the remote processor time ( 3515 ) responsive to the remote processor load ( 3505 ).   
     
     
         16 . A cost analyzer ( 2310 ) according to  claim 15 , wherein:
 the query logic ( 2415 ) is operative to query the at least one secondary storage system node ( 125 ,  130 ,  135 ) for a remote software stack load ( 3510 ) on the at least one secondary storage system node ( 125 ,  130 ,  135 );   the reception logic ( 2420 ) is operative to receive from the at least one secondary storage system node ( 125 ,  130 ,  135 ) the remote software stack load ( 3510 ); and   the remote processor time calculator ( 2710 ) is operative to calculate the remote processor time ( 3515 ) responsive to the remote processor load ( 3505 ) and the remote software stack load ( 3510 ).   
     
     
         17 . A cost analyzer ( 2310 ) according to  claim 13 , further comprising:
 a database ( 2425 ) storing information including at least one of historical communication time information ( 3135 ) with the at least one secondary replica ( 2320 ,  2325 ), a worst case estimate ( 3140 ) for communication time ( 3410 ) with the at least one secondary replica ( 2320 ,  2325 ), an average case estimate ( 3145 ) for communication time ( 3410 ) with the at least one secondary replica ( 2320 ,  2325 ), historical remote processor time information ( 3150 ) for the at least one secondary replica ( 2320 ,  2325 ), a worst case estimate ( 3155 ) for remote processor time ( 3515 ) on the at least one secondary replica ( 2320 ,  2325 ), an average case estimate ( 3160 ) for remote processor time ( 3515 ) on the at least one secondary replica ( 2320 ,  2325 ), historical remote garbage collection information ( 3165 ) for the at least one secondary replica ( 2320 ,  2325 ), a worst case estimate for remote garbage collection ( 3170 ) on the at least one secondary replica ( 2320 ,  2325 ), and an average case estimate for remote garbage collection ( 3175 ) on the at least one secondary replica ( 2320 ,  2325 ); and   a remote predictive analyzer ( 2435 ) to calculate a predicted remote time ( 3605 ) for the at least one secondary replica ( 2320 ,  2325 ) from the information ( 3135 ,  3140 ,  3145 ,  3150 ,  3155 ,  3160 ,  3165 ,  3170 ,  3175 ) stored in the database ( 2425 ).   
     
     
         18 . A method, comprising:
 receiving ( 3905 ) at a distributed storage system node ( 125 ,  130 ,  135 ) an Input/Output (I/O) request ( 905 ), the I/O request ( 905 ) requesting data from a primary replica ( 2315 ) at the distributed storage system node ( 125 ,  130 ,  135 ), the primary replica ( 2315 ) including a storage device ( 140 ,  145 ,  150 ,  155 ,  160 ,  165 ,  225 ,  230 );   calculating ( 3920 ) a local estimated time required ( 3305 ) to complete the I/O request ( 905 );   calculating ( 3940 ) at least one remote estimated time required ( 3710 ) for at least one secondary replica ( 2320 ,  2325 ) storing the requested data;   comparing ( 3950 ) the local estimated time required ( 3305 ) with the at least one remote estimated time required ( 3710 );   selecting ( 3955 ) one of the primary replica ( 2315 ) and the at least one secondary replica ( 2320 ,  2325 ) responsive to the lowest of the local estimated time required ( 3305 ) and the at least one remote estimated time required ( 3710 ); and   directing ( 3960 ) the I/O request ( 905 ) to the selected one of the primary replica ( 2315 ) and the at least one secondary replica ( 2320 ,  2325 ).   
     
     
         19 . A method according to  claim 18 , wherein the distributed storage system node ( 125 ,  130 ,  135 ) is drawn from a set including a Network Attached Solid State Drive (SSD) and an Ethernet SSD. 
     
     
         20 . A method according to  claim 18 , further comprising performing ( 3910 ) the method only if the primary replica ( 2315 ) is performing garbage collection. 
     
     
         21 . A method according to  claim 20 , wherein calculating ( 3920 ) a local estimated time required ( 3305 ) to complete the I/O request ( 905 ) includes:
 calculating ( 4005 ) a local garbage collection time ( 2820 );   calculating ( 4010 ) a local predicted garbage collection time ( 2905 );   calculating ( 4030 ) the local estimated time required ( 3305 ) from the local garbage collection time ( 2820 ), the local predicted garbage collection time ( 2905 ), a local garbage collection weight ( 2635 ), and a predicted garbage collection weight ( 2640 ).   
     
     
         22 . A method according to  claim 20 , wherein calculating ( 3940 ) at least one remote estimated time required ( 3710 ) for at least one secondary replica ( 2320 ,  2325 ) storing the requested data includes:
 calculating ( 4505 ) a communication time ( 3410 ) for the at least one secondary replica ( 2320 ,  2325 );   calculating ( 4510 ) a remote processor time ( 3515 ) for the at least one secondary replica ( 2320 ,  2325 );   calculating ( 4515 ) a remote garbage collection time ( 3705 ) for the at least one secondary replica ( 2320 ,  2325 ); and   calculating ( 4530 ) the at least one remote estimated time required ( 3710 ) from the communication time ( 3410 ), the remote processor time ( 3515 ), the remote garbage collection time ( 3705 ), a communication time weight ( 2735 ), a remote processor time weight ( 2740 ), and a remote garbage collection time weight ( 2745 ).

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.