Sincronización de alto rendimiento

0

Estoy tratando de hacer la carpeta de sincronización p4 / ...

No es muy rápido y usa solo el 2% de la CPU. No estoy contento con el rendimiento.

Estoy tratando de escribir una función en bash, dado un parámetro n, forma una cola de todos los archivos y carpetas n niveles profundos y bifurcaciones de un proceso de sincronización p4 -f $ thatDirectory / ... o sincronización p4 -f $ thatFile .

¿Cómo empiezo sobre esto? ¿Hay alguna utilidad que ya hace esto?

Gracias por adelantado.

SurenNihalani
fuente

Respuestas:

2

Tengo cero experiencia con Perforce, pero esta sincronización suena como una operación de E / S de ruedas . Paralelo en varios procesos no es probable que ayude, porque el cuello de botella es el disco o la red.

Si el disco es el cuello de botella, la paralelización en realidad podría hacerlo más lento , ya que tendrás muchos procesos accediendo a diferentes archivos simultáneamente, haciendo que los cabezales del disco se muevan.

Antes de saltar a las secuencias de comandos, haga un análisis para descubrir qué lo hace más lento. Utilizar herramientas como stracey Wireshark para estudiar leer llamadas / escritura y el tráfico de red, por ejemplo.

Wyzard
fuente
0

a veces, el proceso p4d (el servidor) se ha iniciado con un indicador '-f' que lo ejecutará como un proceso de subproceso único.

un par de puntos a tener en cuenta

intente usar la opción -p para sincronizar en su lugar, ¡significa menos escrituras de db y eso tiene que ser algo bueno!

podría intentar un tipo de 'ir n niveles profundos y sincronizar desde allí hacia abajo', algo como:

$ p4 dirs // <path> / * | mientras lee la ruta; hacer

                p4 dirs $ ruta / * |

                mientras lee subpath;

                hacer

                                p4 dirs $ subpath / * |

                                mientras lee subsubpath;

                                hacer

                                                p4 <cmd> $ subsubpath / ...;

                                hecho;

                                p4 <cmd> $ path / ... # para capturar los archivos en este nivel

                hecho;

                p4 <cmd> // <path> / ... # para capturar los archivos en este nivel (superior) hecho

 

en su caso, tendría <cmd> igual a "sync" + cualquier otro argumento.

 

UNA...
fuente
0

Me alejaría de la sincronización por archivos ... especialmente si tienes varios usuarios tratando de hacer esto desde una herramienta integrada o algo similar. Matamos por completo nuestro servidor aquí en múltiples ocasiones con acrobacias como estas.

Sin embargo, Perforce ofrece una opción para paralelizar su sincronización por usted: en paralelo, requiere algunos ajustes del lado del servidor, pero debe intentarlo.

podría particionar en la invocación múltiple de p4.exe, pero trataría de mantenerlos pequeños, al menos no más allá de su recuento de núcleos disponible.

Newtopian
fuente