Queue length asymptotics for the multipleserver queue with heavytailed Weibull service times
 17 Downloads
Abstract
We study the occurrence of large queue lengths in the GI / GI / d queue with heavytailed Weibulltype service times. Our analysis hinges on a recently developed sample path largedeviations principle for Lévy processes and random walks, following a continuous mapping approach. Also, we identify and solve a key variational problem which provides physical insight into the way a large queue length occurs. In contrast to the regularly varying case, we observe several subtle features such as a nontrivial tradeoff between the number of big jobs and their sizes and a surprising asymmetric structure in asymptotic job sizes leading to congestion.
Keywords
Multipleserver queue Queue length asymptotics Heavy tails Weibull service timesMathematics Subject Classification
60K25 68M201 Introduction
The queue with multiple servers, known as the GI / GI / d queue, is a fundamental model in queueing theory. Its use in everyday applications such as call centers and supermarkets is well documented, and, despite being significantly studied over decades, it continues to pose interesting research challenges. Early work [1, 2] focused on exact analysis of the invariant waitingtime distribution, but finding tractable solutions has turned out to be challenging. This has led to lines of research that focus on approximations, either considering heavily loaded systems [3, 4] or investigating the frequency of rare events, for example the probability of a long waiting time or large queue length. For lighttailed service times, such problems have been considered in [5, 6].
The focus on this paper is on rare event analysis of the queue length in the case of heavytailed service times, a topic that is more recent. For a single server, the literature on this topic is extensive, as there is an explicit connection between waiting times and first passage times of random walks; a textbook treatment can be found in [7]. Tail asymptotics for the steadystate queue length have been treated in [8].
The earliest paper on heavy tails in the setting of a queue with multiple servers that we are aware of is [9], which stated a conjecture regarding the form of the tail of the waiting time distribution in steady state, assuming that the servicetime distribution is subexponential. This has led to followup work on necessary and sufficient conditions for finite moments of the waitingtime distribution in steady state [10], and on tail asymptotics [11, 12]. Most of the results in the latter two papers focus on the case of regularly varying service times. An insight is that if the system load \(\rho \) is not an integer, a large waiting time occurs due to the arrival of \(\lceil d\rho \rceil \) big jobs. The case of other heavytailed service times is poorly understood.
In the present paper, we assume that the servicetime distribution has a tail of the form \(e^{L(x)x^{\alpha }},\) where \( \alpha \in (0,1),\) and L is a slowly varying function (a more comprehensive definition is given later on). Tail distributions of this form are also known as semiexponential. Their analysis poses challenges, as this category of tails falls in between the Pareto (very heavy tailed) case and the classical lighttailed case. In particular, in the case of \(d=2\) and \(\rho <1\), the results in [11] imply that two big jobs are necessary to cause a large waiting time when service times have a Weibull distribution. The arguments in [11] cannot be extended to the case \(\rho >1\). In the 2009 Erlang centennial conference, Sergey Foss posed the question “how many big service times are needed to cause a large waiting time to occur, if the system is in steady state?”. He noted that even a physical or heuristic treatment has been absent.
This has motivated us to investigate a strongly related question; namely, we analyze the event that the queue length \(Q(\gamma n)\) at a large time \(\gamma n\) exceeds a value n. A key result that we utilize in our analysis is a powerful upper bound of Gamarnik and Goldberg, see [13], for \({\mathbf {P}}(Q(t) > x)\). This upper bound can be combined with a recently developed largedeviations principle for random walks with heavytailed Weibulltype increments, which is another key result that we use. Consequently, we can estimate the probability of a large queue length of the GI / GI / d queue with heavytailed Weibulltype service times and obtain physical insights into “the most likely way”in which a large queue length builds up.
Note that the intuition that the solution to (1.2) yields is qualitatively different from the case in which service times have a power law. In the latter case, the optimal number of big jobs equals the minimum number of servers that need to be removed to make the system unstable. In the Weibulltype case, there is a nontrivial tradeoff between the number of big jobs and their size, and this tradeoff is captured by (1.2) and (1.3).
Although we do not make these claims rigorous for \(\gamma =\infty \) (which requires an interchange of limits argument beyond the scope of the paper), it makes a clear suggestion of what the tail behavior of the steadystate queue length should be. This can then be related to the steadystate waitingtime distribution, and the original question posed by Foss, using distributional Little’s law.
As mentioned before, we obtain (1.1) by utilizing a tail bound for Q(t), which is derived in [13]. This tail bound is given in terms of functionals of superpositions of renewal processes. We show that these functionals are (almost) continuous in the \(M_{1}^{\prime }\) topology (in the sense of being amenable to the use of the extended contraction principle). The \(M_{1}^{\prime }\) introduced in [15] is precisely the topology used in the development of a recently produced largedeviations principle for random walks with Weibulltype increments; see [16]. So, our approach here makes the new largedeviations principle directly applicable.
The paper is organized as follows: Section 2 provides a model description and some useful tools used in our proofs. Section 3 provides our main result and some mathematical insights associated with it. Lastly, Sect. 4 contains the lemmas and proofs needed to construct the main result of this paper, Theorem 3.1.
2 Model description and preliminary results
We consider the FCFS GI / GI / d queuing model with d servers in which interarrival times are independent and identically distributed (i.i.d.) random variables (r.v.’s) and service times are i.i.d. r.v.’s independent of the arrival process. Let \(A \ge 0\) and \(S \ge 0\) be a pair of generic interarrival time and service time, respectively. We introduce the following assumptions:
Assumption 2.1
There exists \( \theta _+>0\) such that \({\mathbf {E}}(e^{\theta A})< \infty \) for every \(\theta \le \theta _+\).
Assumption 2.2
\({\mathbf {P}}(S \ge x)=e^{L(x)x^{\alpha }}\), \(\alpha \in (0,1),\) where \(L(\cdot )\) is a slowly varying function at infinity and \(L(x)x^{\alpha 1}\) is eventually nonincreasing.
Result 2.1
An important factor in establishing an LDP on function spaces is the topology of the space under consideration. Let \({\mathbb {D}}[0,T]\) denote the Skorokhod space (i.e., the space of càdlàg functions from [0, T] to \({\mathbb {R}}\)). We shall use \({\mathcal {T}}_{M_1'}\) to denote the \(M_1'\) Skorokhod topology on \({\mathbb {D}}[0,T]\), which is generated by a metric \(d_{M_1'}\) defined in terms of the graphs induced by the elements of \({\mathbb {D}}[0,T]\). The precise definitions of the graph and the metric are as follows:
Definition 2.1
\(t_1 < t_2\); or
\(t_1 = t_2\) and \(\xi (t_1)u_1 < \xi (t_2)  u_2\).
Definition 2.2
 1.
The functional \(S:{\mathbb {D}}[0,T]\rightarrow {\mathbb {R}}\), where \(S(\xi )=\sup _{t\in [0,T]}\xi (t)\), is continuous w.r.t. the \(M_1'\) topology at \(\xi \in {\mathbb {D}}[0,T]\) such that \(\xi (0) \ge 0\);
 2.
the functional \(E:{\mathbb {D}}[0,T] \rightarrow {\mathbb {R}}\), where \(E(\xi )=\xi (T)\), is continuous w.r.t. the \(M_1'\) topology on \({\mathbb {D}}[0,T]\);
 3.
the addition map \((\xi , \zeta ) \mapsto \xi + \zeta \) is a continuous map w.r.t. the \(M_1'\) topology if the functions \(\xi \) and \(\zeta \) do not have jumps of the opposite sign at the same jump times.
Result 2.2
We now turn to the main result of this paper and discuss its implications.
3 Main result
Recall that Q(t) denotes the queue length of the GI / GI / d queue at time t.
Theorem 3.1
 1.
We first prove that \({{\bar{A}}}_n\) and \({{\bar{S}}}_n^{(i)}, i=1,\ldots , d\), satisfy certain LDPs in Proposition 4.1. The LDPs for the \({{\bar{S}}}_n^{(i)}\) are a consequence of Result 2.2, while the LDP for \({{\bar{A}}}_n\) is deduced by the sample path LDP in [6].
 2.
We prove that \(\varPhi _{{\mathbf {E}}A}(\cdot )\) and \(\varPhi _{1}(\cdot )\) are essentially continuous maps—see Proposition B.1 for the more precise statement—and, hence, \(\varPhi _{{\mathbf {E}}A}({{\bar{A}}}_n)\) and \(\varPhi _{1}({{\bar{S}}}^{(i)}_n)\) satisfy the LDPs deduced by the extended contraction principle (cf. Appendix A).
 3.
We show that \({{\bar{M}}}_n\) and \({{\bar{N}}}_n^{(i)}\) are equivalent to \(\varPhi _{{\mathbf {E}}A}({{\bar{A}}}_n)\) and \(\varPhi _{1}({{\bar{S}}}^{(i)}_n)\), respectively, in terms of their large deviations (Proposition 4.2); so \({{\bar{M}}}_n\) and \({{\bar{N}}}^{(i)}_n\) satisfy the same LDPs (Proposition 4.3).
 4.
By applying the contraction principle to the \({{\bar{N}}}^{(i)}\) with the continuous maps in Appendix B, we infer the (logarithmic) asymptotic upper bound of \({\mathbf {P}}(Q(\gamma n) > n)\), which can be characterized by the solution of a (nonstandard) variational problem. On the other hand, the lower bound is derived by keeping track of the optimal solution associated with the LDP upper bound. The complete argument is presented in Proposition 4.4.
 5.
We solve the variational problem in Proposition 4.5 to explicitly compute its optimal solution. The optimal solution of the variational problem provides the limiting exponent and information on the trajectory leading to a large queue length.
 1.
The largedeviations behavior may not be driven by the smallest number of jumps which drives the queueing system to instability (i.e., \(\left\lceil d\lambda \right\rceil \)). In other words, in the Weibull setting, it might be more efficient to block more servers.
 2.
It is not necessary that the servers are blocked by the same amount, i.e., asymmetry in job sizes may be the most probable scenario in certain cases.
4 Proof of Theorem 3.1
We follow the general strategy outlined in the previous section. The first step consists of deriving the LDPs for \({\bar{A}}_n, {\bar{S}}_n^{(i)}\) which subsequently provide us with the LDPs for \({{\bar{M}}}_n\) and \({{\bar{N}}}_n^{(i)}\). Let \(\mathbb D_p^\uparrow [0,\gamma /\mu ]\) be the subspace of \(\mathbb D[0,\gamma /\mu ]\) consisting of nondecreasing pure jump functions that assume nonnegative values at the origin, and define \(\zeta _\mu \in {\mathbb {D}}[0,\gamma /\mu ]\) by \(\zeta _\mu (t) \triangleq \mu t\). Let \({\mathbb {D}}^{\mu }[0,\gamma /\mu ] \triangleq \zeta _\mu +{\mathbb {D}}_p^\uparrow [0,\gamma /\mu ]\) be the subspace of nondecreasing piecewise linear functions that have slope \(\mu \) and assume nonnegative values at the origin.
4.1 Sample path large deviations for the components of the queue length upper bound
Recall that \({{\bar{A}}}_n(t) = \frac{1}{n}\sum _{j=1}^{\lfloor nt\rfloor } A_j\) and \({\bar{S}}_n^{(i)}(t) = \frac{1}{n}\sum _{j=1}^{\lfloor nt\rfloor } S_j^{(i)}\).
Proposition 4.1
Proof
Now, consider the map \(\Upsilon _\mu :\big ({\mathbb {D}}[0,\gamma /\mu ], {\mathcal {T}}_{M_1'}\big )\rightarrow \big ({\mathbb {D}}[0,\gamma /\mu ], {\mathcal {T}}_{M_1'}\big )\), where \(\Upsilon _{\mu }(\xi ) \triangleq \xi + \zeta _\mu \). Let \(I_0(\zeta )\triangleq \inf \{I_A(\xi ): \xi \in {\mathbb {D}}[0,\gamma /{\mathbf {E}}A],\, \zeta =\Upsilon _{{\mathbf {E}}A}(\xi )\}\). From the form of \(I_A\), it is easy to see that \(I_0\) coincides with the righthandside of (4.1). Since this map is continuous (Lemma B.1), the contraction principle (Result A.1) applies showing that \({\bar{A}}_n = \Upsilon _{{\mathbf {E}}A}\big (\frac{1}{n} \sum _{j=1}^{\lfloor nt \rfloor }A_j  t\cdot {\mathbf {E}}A\big )\) satisfies the desired LDP with the good rate function \(I_0\). We next consider \({{\bar{S}}}_n^{(i)}\). Let \(I_i(\zeta )\triangleq \inf \{I_{S^{(i)}}(\xi ): \xi \in {\mathbb {D}}[0,\gamma ], \zeta =\Upsilon _{1}(\xi )\}\). Note that \(I_{S^{(i)}}(\xi )=\infty \) whenever \(\xi \notin {\mathbb {D}}_p^{\uparrow }\), and \(\xi \in {\mathbb {D}}_p^{\uparrow }\) if and only if \(\zeta =\Upsilon _{1}(\xi )\) belongs to \({\mathbb {D}}^{1}[0,\gamma ]\). Again, it is easy to check that \(I_i\) coincides with the righthandside of (4.2). We apply the contraction principle once more to conclude that \({{\bar{S}}}_n^{(i)} = \Upsilon _{1}\big (\frac{1}{n} \sum _{j=1}^{\lfloor nt \rfloor }S^{(i)}_j  t\big )\) satisfies the desired LDP with good rate function \(I_i\). \(\square \)
To carry out the second step of our approach, we next prove that \(\varPhi _{{\mathbf {E}}A}({{\bar{A}}}_n)\) and \(\varPhi _{1}({{\bar{S}}}_n^{(i)})\) satisfy the same LDPs as \({{\bar{M}}}_n\) and \({{\bar{N}}}_n^{(i)}\) for each \(i=1,\ldots ,d\), respectively. To show this, we next prove that \(\varPhi _{{\mathbf {E}}A}({{\bar{A}}}_n)\) and \(\varPhi _{1}({{\bar{S}}}_n^{(i)})\) are exponentially equivalent to \({{\bar{M}}}_n\) and \({{\bar{N}}}_n^{(i)}\) for each \(i=1,\ldots ,d\), respectively.
Proposition 4.2
\({{\bar{M}}}_n\) and \(\varPhi _{{\mathbf {E}}A}({{\bar{A}}}_n)\) are exponentially equivalent in \(\big ({\mathbb {D}}[0,\gamma ],\,{\mathcal {T}}_{M_1'}\big )\). \(\bar{N}_n^{(i)}\) and \(\varPhi _{1}({{\bar{S}}}_n^{(i)})\) are exponentially equivalent in \(\big ({\mathbb {D}}[0,\gamma ],\,{\mathcal {T}}_{M_1'}\big )\) for each \(i=1,\ldots , d\).
Proof
Due to the continuity of \(\varPhi _{\mu }\) over the effective domain of the rate functions \(I_i, i=1,\ldots , d\)—see Proposition B.1—we can appeal to the extended contraction principle—see Remark 1—to establish LDPs for \(\varPhi _{{\mathbf {E}}A}({{\bar{A}}}_n)\) and \(\varPhi _{1}({{\bar{S}}}_n^{(i)})\) for each \(i=1,\ldots ,d\). Our next proposition, which constitutes the third step of our strategy, characterizes the LDPs satisfied by \(\varPhi _{{\mathbf {E}}A}({{\bar{A}}}_n)\) and \(\varPhi _{1}({{\bar{S}}}_n^{(i)})\)—and, hence, by \({\bar{M}}_n\) and \({{\bar{N}}}^{(i)}_n\) as well. Define \( \check{\mathbb C}^{\mu }[0,\gamma ] \triangleq \{\zeta \in {\mathbb {C}}[0,\gamma ]: \zeta =\varphi _{\mu }(\xi ) \text { for some } \xi \in \mathbb D^{\mu }[0,\gamma /\mu ]\}\), where \({\mathbb {C}}[0,\gamma ]\) is the subspace of \({\mathbb {D}}[0,\gamma ]\) consisting of continuous paths, and \(\tau _s(\xi ) = \max \Big \{0,\, \sup \{t\in [0,\gamma ]: \xi (t) = s\}  \inf \{t\in [0,\gamma ]: \xi (t) = s\}\Big \}\).
Proposition 4.3
Proof
Let \({\hat{I}}'_0(\zeta )\triangleq \inf \{I_0(\xi ): \xi \in {\mathbb {D}}[0,\gamma /{\mathbf {E}}A],\,\zeta =\varPhi _{{\mathbf {E}}A}(\xi ) \}\) and \({\hat{I}}'_i(\zeta ) \triangleq \inf \{I_i(\xi ):\xi \in {\mathbb {D}}[0,\gamma ],\,\zeta =\varPhi _{1}(\xi ) \} \) for \(i=1,\ldots ,d\). Recall that in Proposition 4.1 we established the LDP for \({{\bar{A}}}_n\) and \({{\bar{S}}}_n^{(i)}\) for each \(i=1,\ldots ,d\). Note that if \(\xi \in {\mathcal {D}}_{\varPhi _{{\mathbf {E}}A}} \triangleq \{\xi \in {\mathbb {D}}[0,\gamma /{\mathbf {E}}A]: \varPhi _{{\mathbf {E}}A}(\xi )(\gamma )  \varPhi _{{\mathbf {E}}A}(\xi )(\gamma ) > 0\}\), then there has to be s, t such that \(0\le s<t<\gamma /{\mathbf {E}}A\) and \(\varPsi (\xi )(s) = \gamma \). For such \(\xi \), \(I_0(\xi ) = \infty \). From this, along with Proposition B.1, we see that \(\varPhi _{{\mathbf {E}}A}\) is continuous on the effective domain of \(I_0\). Therefore, the extended contraction principle (see Remark 1 after Result A.1) applies, establishing the LDP for \(\varPhi _{{\mathbf {E}}A}({{\bar{A}}}_n)\) with rate function \({{\hat{I}}}_0'\). The LDP for \(\varPhi _{1}({{\bar{S}}}^{(i)}_n)\) with rate function \({{\hat{I}}}_i'\) follows from the same argument. Due to the exponential equivalence derived in Proposition 4.2, \({{\bar{M}}}_n \) and \({{\bar{N}}}_n^{(i)}\) satisfy the same LDP as \(\varPhi _{{\mathbf {E}}A}({{\bar{A}}}_n)\) and \(\varPhi _{1}({{\bar{S}}}^{(i)}_n)\). Therefore, we are done once we prove that the rate functions \({{\hat{I}}}_i'\) deduced from the extended contraction principle satisfy \(I_i' = {{\hat{I}}}_i'\) for \(i=0,\ldots , d\).
4.2 Large deviations for the queue length
Now we are ready to follow step 4) of our outlined strategy and characterize the log asymptotics of \({\mathbf {P}}\big (Q(\gamma n) > n \big )\). Recall that \(\tau _s(\xi ) \triangleq \max \Big \{0,\, \sup \{t\in [0,\gamma ]: \xi (t) = s\}  \inf \{t\in [0,\gamma ]: \xi (t) = s\}\Big \}\).
Proposition 4.4
Proof
4.3 Explicit solution of the variational problem associated with the queue length
We now simplify the expression of \(c^*\) given in Proposition 4.4.
Proposition 4.5
Proof
 1.
We first show that it suffices to optimize over \(\xi _i\) of the form \(\xi _i(t) = t + x_0\) for some \(x_0 \ge 0\).
 2.
Next, we reduce the infinitedimensional problem over the previously mentioned set into a finitedimensional optimization problem where the aim is to minimize a concave function over a compact polyhedral set. This allows us to invoke Corollary 32.3.1 of [20], which enables us to calculate the optimal solution by finding the extreme points of the feasible region.
 \({\mathbb {D}}[0,T]\)

The Skorokhod space–space of càdlàg functions—over the domain [0, T]
 \({\mathbb {D}}^{\uparrow }[0,T]\)

The subspace of \({\mathbb {D}}[0,T]\) consisting of nondecreasing functions that assume nonnegative values at the origin
 \({\mathbb {D}}_p^{\uparrow }[0,T]\)

The subspace of \({\mathbb {D}}[0,T]\) consisting of nondecreasing pure jump functions that assume nonnegative values at the origin
 \({\mathbb {D}}^{\mu }[0,T]\)

The subspace of \({\mathbb {D}}[0,T]\) consisting of nondecreasing piecewise linear functions with slope \(\mu \) almost everywhere and nonnegative values at the origin.
 \(\check{\mathbb {C}}^{\mu }[0,T]\)

The subspace of \({\mathbb {D}}[0,T]\) consisting of continuous functions which are piecewise linear with slope 0 or \(1/\mu \)
 \({\mathcal {T}}_{M_1'}\)

The \(M_1'\) topology
 \(d_{M_1'}\)

The \(M_1'\) metric
 Q(t)

The queue length at time t
 d

The number of servers of the multipleserver queue
 \(\lambda \)

The arrival rate associated with the multipleserver queue
Notes
References
 1.Pollaczek, Félix: Théorie analytique des problèmes stochastiques relatifs à un groupe de lignes téléphoniques avec dispositif d’attente (1961)Google Scholar
 2.Kiefer, J., Wolfowitz, J.: On the theory of queues with many servers. Trans. Am. Math. Soc. 78, 1–18 (1955)CrossRefGoogle Scholar
 3.Iglehart, D.L., Whitt, W.: Multiple channel queues in heavy traffic. I. Adv. Appl. Probab. 2, 150–177 (1970)CrossRefGoogle Scholar
 4.Pang, G., Talreja, R., Whitt, W.: Martingale proofs of manyserver heavytraffic limits for Markovian queues. Probab. Surv. 4, 193–267 (2007)CrossRefGoogle Scholar
 5.Sadowsky, J.S.: The probability of large queue lengths and waiting times in a heterogeneous multiserver queue. II. Positive recurrence and logarithmic limits. Adv. Appl. Probab. 27(2), 567–583 (1995)CrossRefGoogle Scholar
 6.Puhalskii, A.: Large deviation analysis of the single server queue. Queueing Syst. 21(1), 5–66 (1995)CrossRefGoogle Scholar
 7.Foss, S., Korshunov, D., Zachary, S.: An Introduction to HeavyTailed and Subexponential Distributions. Springer Series in Operations Research and Financial Engineering, 2nd edn. Springer, New York (2013)CrossRefGoogle Scholar
 8.Foss, S., Korshunov, D.: Sampling at a random time with a heavytailed distribution. Markov Process. Relat. Fields 6(4), 543–568 (2000)Google Scholar
 9.Whitt, W.: The impact of a heavytailed servicetime distribution upon the \(M/GI/s\) waitingtime distribution. Queue. Syst. Theory Appl. 36(1–3), 71–87 (2000)CrossRefGoogle Scholar
 10.SchellerWolf, A., Vesilo, R.: Sink or swim together: necessary and sufficient conditions for finite moments of workload components in FIFO multiserver queues. Queue. Syst. 67(1), 47–61 (2011)CrossRefGoogle Scholar
 11.Foss, S., Korshunov, D.: Heavy tails in multiserver queue. Queue. Syst. Theory Appl. 52(1), 31–48 (2006)CrossRefGoogle Scholar
 12.Foss, S., Korshunov, D.: On large delays in multiserver queues with heavy tails. Math. Oper. Res. 37(2), 201–218 (2012)CrossRefGoogle Scholar
 13.Gamarnik, D., Goldberg, D.A.: Steadystate \(GI/G/n \) queue in the HalfinWhitt regime. Ann. Appl. Probab. 23(6), 2382–2419 (2013)CrossRefGoogle Scholar
 14.Ge, D., Jiang, X., Ye, Y.: A note on the complexity of \(L_p\) minimization. Math. Program. 129(2, Ser. B), 285–299 (2011)CrossRefGoogle Scholar
 15.Puhalskii, A.A, Whitt, W.: Functional large deviation principles for firstpassagetime processes. Ann. Appl. Probab. 362–381 (1997)CrossRefGoogle Scholar
 16.Bazhba, M., Blanchet, J., Rhee, C.H., Zwart, B.: Samplepath large deviations for Lévy processes and random walks with Weibull increments. arXiv:1710.04013 (2017)
 17.Dembo, A., Zeitouni, O.: Large Deviations Techniques and Applications. Springer, Berlin (2010)CrossRefGoogle Scholar
 18.Ganesh, A.J., O’Connell, N., Wischik, D.J.: Big Queues. Springer, Berlin (2004)CrossRefGoogle Scholar
 19.Feng, J., Kurtz, T.G: Large deviations for stochastic processes. Number 131. American Mathematical Soc. (2006)Google Scholar
 20.Rockafellar, T.: Convex Analysis. Princeton Mathematical Series. Princeton University Press, Princeton (1970)Google Scholar
Copyright information
Open AccessThis article is distributed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits unrestricted use, distribution, and reproduction in any medium, provided you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license, and indicate if changes were made.