Параллельное программирование


Сетевые базы данных с циркулирующими запросами-предложениями - часть 2


Пусть, как и прежде, m — количество сегментов БД, n — количество РС в ЛВС. Для поиска вероятности того, свободен ли требуемый сегмент или взят на обработку (занят), необходимо определить в стационарном режиме среднее число занятых сегментов БД.

Считая поток запросов простейшим, построим цепь Маркова (рис. 2.6), соответствующую многоканальной системе массового обслуживания с количеством n каналов [17].

Цепь Маркова для нахождения предельных вероятностей состояния сегментов БД

Рис. 2.6.  Цепь Маркова для нахождения предельных вероятностей состояния сегментов БД

Состояние S0 соответствует отсутствию занятых сегментов, поток запросов при этом реализуется полностью, т.е. ?0 = n ?польз. На обратный переход в это состояние влияет поток обслуживания с интенсивностью ?, формируемый копией СУБД единственной РС. Состояние S1 соответствует наличию одного занятого сегмента. Так как одна РС оказывается занятой обработкой сегмента, то поток запросов к БД реализуется n - 1 свободными. Кроме того, из этого потока исключаются запросы к занятому сегменту. Тогда

\lambda_1 = (1 - \frac{1}{m})(n - 1) \lambda_{\text{польз}}
. Поток обслуживания, приводящий в это состояние из состояния S2, характеризующегося двумя занятыми сегментами, определяется двумя копиями СУБД. Интенсивность этого потока обслуживания равна 2? и т.д.

Таким образом, для состояния Si, i = 0 , ..., n, когда занято i сегментов,

 \begin{align*} \lambda_i = (1 - \frac{i}{m})(n - i) \lambda_{польз} \notag \end{align*}

(2.11)

а интенсивность потока обслуживания (для i < n), приводящего в это состояние, равна (i + 1)?.

Уравнения Колмогорова имеют вид

 \begin{align*} \left\{ \begin{array}{l} \lambda_0\, P_0 = \mu P_1 \\ \lambda_1\, P_1 = 2 \mu P_2 \\ \lambda_2\, P_2 = 3 \mu P_3 \\ \ldots \ldots \ldots \ldots\\ \lambda_{n-1}\, P_{n-1} = n \mu P_n \\ P_0 + P_1 + \ldots + P_n = 1. \end{array} \right. \notag \end{align*}

(2.12)

Решая [17] эту систему, находим:

 \begin{align*} P_0 = (1 + \frac{\lambda_0}{1!\mu}+\frac{\lambda_1\lambda_0}{2!\mu^2}+ \frac{\lambda_2\lambda_1\lambda_0}{3!\mu^3}+ \ldots + \frac{\lambda_{n-1}\lambda_{n-2} \ldots \lambda_0}{n!\mu^n})^{-1};\notag \\ P_1 = \frac{\lambda_0}{1!\mu}P_0; \, P_2 = \frac{\lambda_1\lambda_0}{2!\mu^2}P_0; \, \ldots ;\, P_n = \frac{\lambda_{n-1}\lambda_{n-2} \ldots \lambda_0}{n!\mu^n} P_0. \notag \end{align*}

(2.13)

Определим среднее число q занятых сегментов:

 \begin{align*} q = \sum_i i P_i. \notag \end{align*}

(2.14)

Тогда вероятность обращения к занятому сегменту

 \begin{align*} P_{\text{занят}} = \frac{q}{m}. \notag \end{align*}

(2.15)

Пусть tпредл — цикл времени предъявления очередной заявки-предложения рабочей станции. Тогда среднее время ожидания свободного сегмента вычисляется следующим образом:

tожид своб. = 0,5 (m - q) tпредл. (2.16)

Если сегмент, к которому произведен запрос, занят, то время tожид. зан. его ожидания зависит от времени окончания его обработки, от времени tвозвр возврата серверу, от времени tосвоб включения в число свободных и от времени его ожидания как свободного сегмента:

tожид.зан. = 0,5 tобсл. + tвозвр. + tосвоб. + tожид своб. (2.17)

Тогда полное время обслуживания запроса с РС вычисляется:

Tобсл = Pзанят tожид.зан + (1 - Pзанят)tожид своб + tобсл. (2.18)

Полученная оценка, аналогично (2.5) и (2.10), является основой критерия эффективности данного способа организации сетевой БД.




- Начало -  - Назад -  - Вперед -