De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

Un programador de trabajos es una aplicación informática para controlar la ejecución de trabajos sin supervisión del programa en segundo plano . [1] Esto se denomina comúnmente programación por lotes , ya que la ejecución de trabajos no interactivos a menudo se denomina procesamiento por lotes , aunque el trabajo tradicional y el lote se distinguen y contrastan; consulte esa página para obtener más detalles. Otros sinónimos incluyen sistema por lotes , sistema de gestión de recursos distribuidos ( DRMS ), administrador de recursos distribuidos ( DRM ) y, comúnmente en la actualidad, automatización de la carga de trabajo ( WLA). La estructura de datos de los trabajos a ejecutar se conoce como cola de trabajos .

Los programadores de trabajos modernos suelen proporcionar una interfaz gráfica de usuario y un único punto de control para definir y supervisar las ejecuciones en segundo plano en una red distribuida de computadoras. Cada vez más, los programadores de trabajos deben orquestar la integración de las actividades comerciales en tiempo real con el procesamiento de TI de fondo tradicional en diferentes plataformas de sistemas operativos y entornos de aplicaciones comerciales.

La programación de trabajos no debe confundirse con la programación de procesos , que es la asignación de los procesos en ejecución a las CPU por parte del sistema operativo .

Resumen [ editar ]

Las características básicas que se esperan del software de programación de trabajos incluyen:

  • interfaces que ayudan a definir flujos de trabajo y / o dependencias de trabajo
  • envío automático de ejecuciones
  • interfaces para monitorear las ejecuciones
  • prioridades y / o colas para controlar el orden de ejecución de trabajos no relacionados

Si el software de un área completamente diferente incluye todas o algunas de esas características, se puede considerar que este software tiene capacidades de programación de trabajos.

La mayoría de los sistemas operativos , como Unix y Windows , proporcionan capacidades básicas de programación de trabajos, en particular mediante at y batch , cron y el programador de tareas de Windows . Los servicios de alojamiento web brindan capacidades de programación de trabajos a través de un panel de control o una solución webcron . Muchos programas como DBMS , copias de seguridad , ERP y BPMtambién incluyen capacidades de programación de trabajos relevantes. La programación de trabajos proporcionada por el sistema operativo ("SO") o el programa puntual no proporcionará generalmente la capacidad de programar más allá de una sola instancia de SO o fuera del alcance del programa específico. Las organizaciones que necesitan automatizar la carga de trabajo de TI no relacionada también pueden aprovechar otras funciones avanzadas de un programador de trabajos, como:

  • programación en tiempo real basada en eventos externos impredecibles
  • reinicio automático y recuperación en caso de fallas
  • alerta y notificación al personal de operaciones
  • generación de informes de incidentes
  • pistas de auditoría para fines de cumplimiento normativo

Estas capacidades avanzadas pueden ser escritas por desarrolladores internos, pero con mayor frecuencia son proporcionadas por proveedores que se especializan en software de administración de sistemas.

Conceptos principales [ editar ]

Hay muchos conceptos que son fundamentales para casi todas las implementaciones del programador de trabajos y que son ampliamente reconocidos con variaciones mínimas: trabajos, dependencias, secuencias de trabajos y usuarios.

Más allá de las herramientas básicas de programación de una sola instancia de SO, existen dos arquitecturas principales para el software de programación de trabajos.

  • Arquitectura maestro / agente: la arquitectura histórica del software de programación de trabajos. El software Job Scheduling se instala en una sola máquina (Master), mientras que en las máquinas de producción solo se instala un componente muy pequeño (Agent) que espera los comandos del Master, los ejecuta y luego devuelve el código de salida al Master.
  • Arquitectura cooperativa: un modelo descentralizado en el que cada máquina es capaz de ayudar con la programación y puede descargar trabajos programados localmente a otras máquinas que cooperan. Esto permite el equilibrio dinámico de la carga de trabajo para maximizar la utilización de los recursos de hardware y la alta disponibilidad para garantizar la prestación de servicios.

Cola por lotes para clústeres de HPC [ editar ]

Un nicho importante para los programadores de trabajos es administrar la cola de trabajos para un grupo de computadoras. Por lo general, el programador programará trabajos desde la cola a medida que los recursos suficientes (nodos del clúster) estén inactivos. Algunos sistemas por lotes de clúster ampliamente

  • Sistema de lotes portátil (PBS)
  • Administrador de cargas de trabajo de Slurm
  • Plataforma LSF
  • Motor de cuadrícula Univa
  • Moab
  • LoadLeveler
  • Cóndor
  • OpenLava
  • Flujos de trabajo y programación proactivos

Historia [ editar ]

La programación de trabajos tiene una larga historia. Los programadores de trabajos han sido uno de los componentes principales de la infraestructura de TI desde los primeros sistemas de mainframe. Al principio, las pilas de tarjetas perforadas se procesaban una tras otra, de ahí el término " procesamiento por lotes ".

Desde un punto de vista histórico, podemos distinguir dos épocas principales sobre los Job Schedulers:

  1. La era del mainframe
    • Job Control Language (JCL) en mainframes de IBM . Inicialmente basada en la funcionalidad JCL para manejar dependencias, esta era se caracteriza por el desarrollo de soluciones de programación sofisticadas (como Job Entry Subsystem 2/3 ) que forman parte del conjunto de herramientas de automatización y administración de sistemas en el mainframe.
  2. La era de los sistemas abiertos
    • Programadores modernos en una variedad de arquitecturas y sistemas operativos. Con las herramientas de programación estándar limitadas a comandos como at y batch , la necesidad de programadores de trabajos estándar de mainframe ha aumentado con la mayor adopción de entornos informáticos distribuidos.

En cuanto al tipo de programación, también hay distintas épocas:

  1. Procesamiento por lotes : la ejecución tradicional basada en la fecha y la hora de tareas en segundo plano en función de un período definido durante el cual los recursos estaban disponibles para el procesamiento por lotes (la ventana por lotes ). En efecto, el enfoque original del mainframe se traspuso al entorno de sistemas abiertos.
  2. Automatización de procesos impulsada por eventos: donde los procesos en segundo plano no pueden ejecutarse simplemente en un momento definido, ya sea porque la naturaleza del negocio exige que la carga de trabajo se base en la ocurrencia de eventos externos (como la llegada de un pedido de un cliente o un stock actualización desde una sucursal de la tienda), o porque no hay o no hay una ventana de lote insuficiente.
  3. Programación de trabajos orientada a servicios: los desarrollos recientes en Arquitectura orientada a servicios (SOA) han visto un movimiento hacia la implementación de la programación de trabajos como un servicio de infraestructura de TI reutilizable que puede desempeñar un papel en la integración de la carga de trabajo de aplicaciones comerciales existentes con nuevas aplicaciones en tiempo real basadas en servicios web. .

Programación [ editar ]

Se utilizan varios esquemas para decidir qué trabajo en particular ejecutar. Los parámetros que podrían considerarse incluyen:

  • Prioridad de trabajo
  • Computar la disponibilidad de recursos
  • Clave de licencia si el trabajo utiliza software con licencia
  • Tiempo de ejecución asignado al usuario
  • Número de trabajos simultáneos permitidos para un usuario
  • Tiempo estimado de ejecución
  • Tiempo de ejecución transcurrido
  • Disponibilidad de dispositivos periféricos
  • Ocurrencia de eventos prescritos
  • Dependencia laboral
  • Dependencia de archivos
  • Dependencia de la solicitud del operador

Ver también [ editar ]

  • Recurso computacional
  • Computación distribuída
  • Cola de trabajos
  • Comparación de software de clúster
  • Problema de selección de actividad
  • Orquestación (informática)

Referencias [ editar ]

  1. ^ Efecto de las características del tamaño del trabajo en el rendimiento de la programación del trabajo